写点什么

MySQL 实战四十五讲基础篇总结(五)

发布于: 2020 年 05 月 24 日
MySQL实战四十五讲基础篇总结(五)

总结

  • 回表:回到主键索引树搜索的过程,称为回表

  • 覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k between 3 and 5

如果执行的语句是 select ID from T where k between 3 and 5,这时只需要查 ID 的值,而 ID 的值已经在 k 索引树上了,因此可以直接提供查询结果,不需要回表。也就是说,在这个查询里面,索引 k 已经“覆盖了”我们的查询需求,我们称为覆盖索引。

  • 在引擎内部使用覆盖索引在索引 K 上其实读了三个记录,R3~R5(对应的索引 k 上的记录项),但对于 MySQL 的 Server 层来说,它就是找引擎拿到了两条记录,因此 MySQL 认为扫描行数是 2 最左前缀原则:B+Tree 这种索引结构,可以利用索引的"最左前缀"来定位记录 只要满足最左前缀,就可以利用索引来加速检索。 最左前缀可以是联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符 第一原则是:如果通过调整顺序,可以少维护一个索引,那么这个顺序往往就是需要优先考虑采用的。 索引下推:在 MySQL5.6 之前,只能从根据最左前缀查询到 ID 开始一个个回表。到主键索引上找出数据行,再对比字段值。 MySQL5.6 引入的索引下推优化,可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。


发布于: 2020 年 05 月 24 日阅读数: 59
用户头像

现在是你们的,未来是我们的 2020.01.11 加入

爱生活,爱DB

评论

发布
暂无评论
MySQL实战四十五讲基础篇总结(五)