讲下面的知识的时候,需要知道例如表的varchar字段存储了很长的值,那我们给这个varchar字段建立索引,就会让索引变得很大 或者说如果需要我们通过文章内容进行查询,这个内容是text类型的字段,存储了上万个字符,我们对这么多字符建立索引,会导致索引变得庞大

 

前缀索引 当字段类型为字符串(varchar, text等)时,有时候需要索引很长的字符串,这会让索引变得很大(索引长度大),查询时,浪费大量的磁盘IO,影响查询效率。 此时可以只将字符串的一部分前缀截取出来,建立前缀,这样可以大大节约索引空间,从而提高索引效率。语法如下

 

前缀长度 可以根据索引的选择性来决定,而选择性是指不重复的索引值(基数)和数据表的记录总数的比值,索引选择性越高则查询效率越高,唯一索引的选择性 是1,这是最好的索引选择性,性能也是最好的

 

如何获取tb_user表的email字段的选择性

 

总结:尽量截取最少的字符作为前缀索引,让选择性尽量接近或等于1,这样查询效率越高,也可降低索引存储的空间

 

前缀索引的查询流程如下

1、把表中的id列创建主键索引(也叫聚集索引), 聚集索引在B+树查的是某个id值对应的一整行的数据

2、把email列的每个值的前5个字符截取出来,作为5个前缀索引,前缀索引就是二级索引(也叫辅助索引),二级索引在B+树查的是某个二级索引对应的id值

3、前缀索引必然回表