回表,索引覆盖,最左匹配
Posted gaoyang666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回表,索引覆盖,最左匹配相关的知识,希望对你有一定的参考价值。
数据库索引
回表
通俗的讲:如果索引的列在select所需获得列中就不需要回表(因为在mysql中索引是根据索引列的值进行排序的,所以索引节点中存在该列中的部分值),如果select所需获得列中有大量的非索引列,索引就需要到表中找到相应的列的信息,这就叫回表。
索引覆盖
如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。即只需扫描索引而无须回表
覆盖索引必须要存储索引列的值,而哈希索引、空间索引和全文索引不存储索引列的值,所以mysql只能用B-tree索引做覆盖索引。
mysql不能在索引中执行LIke操作。mysql能在索引中做最左前缀匹配的like比较,但是如果是 通配符开头的like查询,存储引擎就 无法做比较匹配。这种情况下mysql只能提取数据行的值而不是索引值来做比较
最左匹配原则
以上是关于回表,索引覆盖,最左匹配的主要内容,如果未能解决你的问题,请参考以下文章
MySQL ---- 索引类型 & 使用规则 & 回表覆盖索引 & 设计索引考虑因素