当前位置: 首页 > 编程笔记 >

MySQL覆盖索引的使用示例

伊温书
2023-03-14
本文向大家介绍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,说明使用了覆盖索引。

mysql覆盖索引和联合索引的区别

覆盖索引zhi是查询的列可dao以直接通过索引zhuan提取,比如只查询主键shu的列!或者查询联合索引的所有列或者左边开始的部分列(注意有顺序的)!

而联合索引并不一定只从索引中能获取到所有的数据,这个取决于你所查询的列。比如select * from table where ××××××;的方式就不太可能是覆盖索引。因此如果你查询的列能用到联合索引,且你查询的列都能通过联合索引获取,比如你只查询联合索引所在的列或者左边开始的部分列,这就相当于覆盖索引了。通常为了让查询能用到覆盖索引,就将要查询的多列数据设置成联合索引。

总结

到此这篇关于MySQL覆盖索引使用的文章就介绍到这了,更多相关MySQL覆盖索引内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 问题内容: 在下面的查询 如果我有2个单独的索引,一个在 col3上 ,另一个在 col4上 ,则此查询中将使用哪个索引? 我在某处读到,查询中的每个表仅使用一个索引。这是否意味着查询无法使用两个索引? 其次,如果我同时使用 col3* 和 col4 创建了一个复合索引,但仅在 WHERE 子句中使用了 col3 ,那么性能会更糟吗?例: * 最后,在所有情况下仅使用Covering索引是否更好?

  • 主要内容:什么是覆盖索引查询?,使用覆盖索引查询你可能听说过列索引是通过最大限度地减少查询所需的磁盘访问次数来优化查询性能的好方法。MongoDB 有一个字段索引的特定应用程序,称为覆盖索引查询(Covered Queries),其中查询的所有列都被进行索引。因为 MongoDB 不必检查除索引之外的任何文档,所以覆盖索引查询非常快。本节我们就来学习一下如何使用覆盖索引查询更快地查询数据。 什么是覆盖索引查询? 根据 MongoDB 官方文档,

  • 本文向大家介绍Mysql性能优化案例 - 覆盖索引分享,包括了Mysql性能优化案例 - 覆盖索引分享的使用技巧和注意事项,需要的朋友参考一下 场景 产品中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化 表结构很简单,主要字段: 一个用户会有多条图片记录 现在有一个根据user_id建立的索引:uid 查询语句也很简单:取得某用户的图片集合 优化前

  • 问题内容: 我正在拔头发试图找出我做错了什么。该表非常简单: 如您所见,我创建了一个覆盖该表的所有三列的覆盖索引,并在上添加了一个潜在索引的附加索引。这是一对多链接表,每个链接表都映射到一个或多个链接表。该表包含6500万行。 所以,这就是问题所在。假设我想知道有多少人的icd代码为“ 25000”。[如果您想知道的话,那就是糖尿病]。我写了一个查询,看起来像这样: 这需要60秒钟以上的时间才能执

  • 主要内容:1 独立的列,2 前缀索引和索引选择性,3 多列(组合、联合)索引,3.1 多个单列索引的问题,3.2 使用多列索引,4 选择适合的索引列顺序,5 聚簇(聚集)索引,6 覆盖索引详细介绍了各种高性能的索引使用策略,比如联合索引、索引顺序、聚簇索引、覆盖索引等等,以及常见索引失效的情况。 前面我们已经介绍了各种类型的索引结构及其对应的优缺点: BTREE索引的数据结构以及具体实现原理深入解析 哈希索引的数据结构以及索引的优缺点 正确的创建和使用索引是实现高性能查询的基础。我们通常会看到一

  • 本文向大家介绍Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE,包括了Mysql性能优化案例研究-覆盖索引和SQL_NO_CACHE的使用技巧和注意事项,需要的朋友参考一下 场景 产品中有一张图片表pics,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化 表结构很简单,主要字段: 一个用户会有多条图片记录,现在有一个根据user_id建立的索引:u