回表,索引覆盖,最左匹配

Posted gaoyang666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回表,索引覆盖,最左匹配相关的知识,希望对你有一定的参考价值。

数据库索引

回表

通俗的讲:如果索引的列在select所需获得列中就不需要回表(因为在mysql中索引是根据索引列的值进行排序的,所以索引节点中存在该列中的部分值),如果select所需获得列中有大量的非索引列,索引就需要到表中找到相应的列的信息,这就叫回表。

技术图片

索引覆盖

如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。即只需扫描索引而无须回表

覆盖索引必须要存储索引列的值,而哈希索引、空间索引和全文索引不存储索引列的值,所以mysql只能用B-tree索引做覆盖索引。

mysql不能在索引中执行LIke操作。mysql能在索引中做最左前缀匹配的like比较,但是如果是 通配符开头的like查询,存储引擎就 无法做比较匹配。这种情况下mysql只能提取数据行的值而不是索引值来做比较

最左匹配原则

技术图片

以上是关于回表,索引覆盖,最左匹配的主要内容,如果未能解决你的问题,请参考以下文章

mysql-索引

索引第二篇:MySQL索引加快查找速度的内部原理刨析

索引第二篇:MySQL索引加快查找速度的内部原理刨析

MySQL ---- 索引类型 & 使用规则 & 回表覆盖索引 & 设计索引考虑因素

MySQL ---- 索引类型 & 使用规则 & 回表覆盖索引 & 设计索引考虑因素

MySQL -- 回表 | 索引覆盖 | 索引下推 | 最左前缀原则 介绍