太阳集团tyc5997|官网【中国】有限公司

MySQL覆盖索引使用示例
  • 作者:admin
  • 发表时间:2021-02-05 07:50
  • 来源:未知

如果一个索引包含(或覆盖)所有要查询的字段的值,它被称为“覆盖索引”。本文主要介绍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之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持脚本屋!

Baidu
sogou