Kaze
Kaze
Published on 2023-10-20 / 12 Visits
0
0

05深入浅出索引(下)

文章地址

总结

  1. 覆盖索引:如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据。

    覆盖索引的目的就是”不回表“, 所以只有索引包含了where条件部分和select返回部分的所有字段,才能实现这个目的

  2. 最左前缀:联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符

  3. 联合索引:根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’可以使用索引,单以name=‘张三’ 不会使用索引,考虑到存储空间的问题,还请根据业务需求,将查找频繁的数据进行靠左创建索引。

  4. 索引下推:like 'hello%’and age >10 检索,MySQL5.6版本之前,会对匹配的数据进行回表查询。5.6版本后,会先过滤掉age<10的数据,再进行回表查询,减少回表率,提升检索速度

    可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。


Comment