美文网首页
MySQL学习笔记:给字符串类型的字段添加索引

MySQL学习笔记:给字符串类型的字段添加索引

作者: alex很累 | 来源:发表于2020-12-25 10:52 被阅读0次

背景

   在一些业务场景下,我们可能需要给字符串类型的字段添加索引,例如:在学校中,一些用学生的编号进行登录的管理系统;一些支持邮箱登录的网站等。
   在登录验证过程中,我们势必要通过编号、邮箱来进行查询;那么,在数据量特别大的时候,为了不对表进行全局扫描,给这些字段加上索引,是非常有必要的。

创建索引的方法以及优缺点

1.直接创建完整索引

alter table Customer add index index1(email);

缺点:受字符串的长度影响,可能比较占用空间。

2.创建前缀索引

alter table Customer add index index1(email(6));

优点:只取前n个字符作为索引,与创建完整索引相比,节约了空间。

缺点:
A.只取前n个字符作为索引,使得索引值并不唯一;
   例如:buzhidao1@qq.com,buzhidao2@qq.com,buzhidao3@qq.com(邮箱唯一);前6个字符均为“buzhidao”。
   当使用该索引查到符合的主键后(前n位符合),用主键id去主键索引查询记录并比较email是否完成符合,若不符合,则回到email(6)的index找下一个索引,直到找到email完全符合的记录 或 email(6)不符合停止查找。

这样的查询过程,使得查询语句读数据的次数变多。

那么该如何选择合适的索引长度呢?

select 
 count(distinct left(email,4))as L4,
 count(distinct left(email,5))as L5, 
 count(distinct left(email,6))as L6,
 count(distinct left(email,7))as L7
from SUser;

计算区分度,一般区分度在95%以上,我们认为是可以使用的。

B.除此之外,使用前缀索引,将无法使用覆盖索引,因为系统并不知道前缀索引截取的字符串是否完整;在执行过程中,仍然会去主键索引再去判断email是否符合。

3.对字符串灵活的进行处理

A.对于倒序区分度高的字符串,我们可以倒序存储字符串并建立前缀索引。
缺点:在读写时要进行reverse函数(倒过来)。

B.额外创建一个字符串的hash字段,对该字段创建索引。
缺点:额外增加了存储成本。

相关文章

  • MySQL学习笔记:给字符串类型的字段添加索引

    背景    在一些业务场景下,我们可能需要给字符串类型的字段添加索引,例如:在学校中,一些用学生的编号进行登录的管...

  • MongoDB的集合插入一个字段

    添加一个字段. table 代表表名 , 添加字段 content,字符串类型。 如,给集合添加一个状态字段 删...

  • 数据库篇

    1、mysql索引在什么情况下回失效1、查询条件包括or可能导致索引失效2、查询时字段类型是字符串,where时参...

  • Mysql学习——MySQL数据结构修改(2)

    Mysql表结构操作添加表字段修改表字段删除表字段修改表字段类型修改表名简介:Mysql表结构操作,添加表字段,修...

  • MySQL 字段操作(表已建立)

    MySQL 字段操作(表已建立) 操作类型add (添加)modify (修改)drop 删除 字段类型drop ...

  • 关于数据库一些面试总结

    1.怎么查看该字段是否使用了索引,索引的作用,什么情况下(哪些字段可以)使用索引,索引的类型? (1)mysql可...

  • mysql数据库设计

    表字段类型 数值 字符串 数据字段属性 表索引 索引的作用是提高检索的速度 主键索引//增加主键索引primary...

  • 为何MySQL会选错索引

    在实际的生产环境中,给MySQL的字段加索引让查询的效率更高,我们往往会给MySQL的表字段加索引。MySQL具体...

  • 索引映射管理

    API允许向索引(index)添加文档类型(type),或者向文档类型中添加字段(field)elasticsea...

  • mysql之字符串字段添加索引

    字符串创建索引方式:1、直接创建完整索引,比较占用空间。2、创建前缀索引,节省空间,但会增加查询扫描次数,并且不能...

网友评论

      本文标题:MySQL学习笔记:给字符串类型的字段添加索引

      本文链接:https://www.haomeiwen.com/subject/dyubnktx.html