乐趣区

关于mysql:MySQL-覆盖索引

什么是笼罩索引

创立一个索引,该索引蕴含查问中用到的所有字段,称为“笼罩索引”。

应用笼罩索引,MySQL 只须要通过索引就能够查找和返回查问所须要的数据,而不用在应用索引解决数据之后再进行回表操作。

笼罩索引能够一次性实现查问工作,无效缩小 IO,进步查问效率。

应用示例

查问语句:

SELECT col2, col3 FROM test_table WHERE col1 = xxx ORDER BY col2;

创立一个单列索引:

ALTER TABLE `test_table` ADD INDEX `idx_col1`(`col1`) USING BTREE;

剖析查问:

EXPLAIN SELECT SQL_NO_CACHE col2, col3 FROM test_table WHERE col1 = xxx ORDER BY col2;

后果:对 col1 建设索引后,type 为 ref,应用到了 idx_col1 索引。


批改索引,依据查问语句,建设一个联结索引:

ALTER TABLE `test_table` DROP INDEX `idx_col1`;
ALTER TABLE `test_table` ADD INDEX `idx_col1_col2_col3`(`col1`,`col2`,`col3`) USING BTREE;

剖析查问:

EXPLAIN SELECT SQL_NO_CACHE col2, col3 FROM test_table WHERE col1 = xxx ORDER BY col2;

后果:建设联结索引后,type 为 ref,应用了 idx_col1_col2_col3 索引,Extra 为 Using index,阐明应用了笼罩索引。

退出移动版