如果一个索引包含(或覆盖)所有要查询的字段的值,它被称为“覆盖索引”。本文主要介绍MySQL覆盖率指数的相关信息,有需要的朋友可以参考
什么是覆盖索引
创建一个包含查询中使用的所有字段的索引,称为“覆盖索引”。
使用覆盖索引,MySQL只需要通过索引就可以找到并返回查询需要的数据,而不需要在使用索引处理数据后返回到表中。
覆盖索引可以一次性完成查询工作,有效降低IO,提高查询效率。
用法示例
查询语句:
从test _ table中选择col2、col3,其中col1=唐山app开发ol2订购的XXX
创建单列索引:
ALTER TABLE ` test _ TABLE ` ADD INDEX ` idx _ col 1 `(` col 1 `)USing BTree;
分析查询:
解释从测试表中选择SQL_NO_CACHE列2、列3,其中列1=xxx ORDER BY列2;
结果:col1类型为ref,使用idx_col1索引。
根据查询语句修改索引并构建联合索引:
ALTER TABLE ` test _ TABLE ` DROP INDEX ` idx _ col 1 `;
ALTER TABLE ` test _ TABLE ` ADD INDEX ` idx _ col 1 _ col2 _ col 3 `(` col 1 `、` col 2 `、` col 3 `)USing BTree;
分析查询:
解释从测试表中选择SQL_NO_CACHE列2、列3,其中列1=xxx ORDER BY列2;
结果:联合索引建立后,类型为ref,使用idx_col1_col2_col3索引,Extra为Using索引,表示使用叠加索引。
mysql覆盖索引和联邦索引的区别
覆盖索引zhi是可以通过索引zhuan直接提取的查询列,比如只查询主键shu的列!或者查询union索引的所有列或者从左边开始的一些列(注意顺序)!
联合索引不一定从索引中获取所有数据,这取决于您查询的列。例如,从表中选择*其中;不太可能覆盖索引。因此,如果您查询的列可以使用联合索引,并且您查询的所有列都可以通过联合索引获得,例如,您只查询联合索引所在的列或从左边开始的一些列,这相当于覆盖了索引。通常,为了使查询覆盖索引,要查询的多列数据被设置为联合索引。
总结
本文介绍了MySQL覆盖索引的使用。更多相关的MySQL叠加索引内容,请搜索Script House之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持脚本屋!