MySQL覆盖索引的使用示例

 更新时间:2021年01月31日 10:27:47   作者:小伍  
如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。这篇文章主要给大家介绍了关于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覆盖索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql实现简易版搜索引擎的示例代码

    Mysql实现简易版搜索引擎的示例代码

    前段时间,因为项目需求,需要根据关键词搜索聊天记录,所以本文实现了Mysql实现简易版搜索引擎,具有一定的参考价值,感兴趣的可以了解一下
    2021-08-08
  • 浅析MySQL - MVCC

    浅析MySQL - MVCC

    这篇文章主要介绍了MySQL - MVCC的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL-tpch 测试工具简要手册

    MySQL-tpch 测试工具简要手册

    tpch是TPC(Transaction Processing Performance Council)组织提供的工具包。用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能。它包含了一整套面向商业的ad-hoc查询和并发数据修改,强调测试的是数据库、平台和I/O性能,关注查询能力
    2016-05-05
  • MySQL 查询树结构方式

    MySQL 查询树结构方式

    今天小编就为大家分享一篇MySQL 查询树结构方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • MySQL 去除字符串中的括号以及括号里的所有内容

    MySQL 去除字符串中的括号以及括号里的所有内容

    这篇文章主要介绍了MySQL 去除字符串中的括号以及括号里的所有内容,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 提升MySQL查询效率及查询速度优化的四个方法详析

    提升MySQL查询效率及查询速度优化的四个方法详析

    查询语句的优化是提高MySQL查询速度的重要方法,可以通过使用JOIN语句、子查询、优化where子句等方式来减少查询的时间,下面这篇文章主要给大家介绍了关于提升MySQL查询效率及查询速度优化的四个方法,需要的朋友可以参考下
    2023-04-04
  • MySQL优化之如何写出高质量sql语句

    MySQL优化之如何写出高质量sql语句

    在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素。这篇文章主要给大家介绍了关于MySQL优化之如何写出高质量sql语句的相关资料,需要的朋友可以参考下
    2021-05-05
  • MySQL索引失效的几种情况图文详解

    MySQL索引失效的几种情况图文详解

    索引并不是时时都会生效的,在一起情况下将导致索引失效,这篇文章主要给大家介绍了关于MySQL索引失效的几种情况,文章通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • MySQL查询时指定使用索引的实现

    MySQL查询时指定使用索引的实现

    在MySQL中,可以通过指定查询使用的索引来提高查询性能和优化查询执行计划,本文就来介绍一下MySQL查询时指定使用索引的实现,感兴趣的可以了解一下
    2023-11-11
  • Centos 6.5下安装MySQL 5.6教程

    Centos 6.5下安装MySQL 5.6教程

    这篇文章主要介绍了Centos 6.5下安装MySQL 5.6教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03

最新评论