09月09, 2021
收藏本站

MySQL索引

mysql索引是个大话题,有很多可以聊的。持续记录,持续更新。

前缀索引:当字段长度较长,又需要建立索引,可指定前面N个字段作为索引。

// 计算公式,使rate逐步接近1
select count( distinct( left( col_name,N ) ) ) /count(col_name) as rate 
from tb;  

覆盖索引:高频SQL可以将字段都加到索引中,减少回表次数,提高查询效率
索引下推:MySQL5.6之前,当索引字段出现范围查询,无法使用后续字段索引;
5.6之后,使用索引下推(index condition push),直接在索引进行过滤再回表查询。


字符串加索引的奇淫技巧:

  1. 倒序存储
    同一地区,身份证前几位都相同,可以考虑使用reverse倒序存储,仅使用前面几个字段做前缀索引;也遇到有要对address字段做索引的,同理可以倒序。

  2. hash字段
    新增hash字段,对原字符串进行hash转换存储。例如使用crc32(),只需存储4个字节,但转换后的值可能存在冲突,查询时还需加原字段强匹配。


Comments