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 相邻两行记录某列的差值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • MySQL低权限提权的方法

    MySQL低权限提权的方法

    在MySQL中,低权限提权是一种常见的需求,低权限用户通过利用漏洞、存储过程、用户定义函数(UDF)和触发器(Trigger)等技术手段进行权限提升,本文就来介绍一下,感兴趣的可以了解一下
    2024-09-09
  • 基于MySQL的存储引擎与日志说明(全面讲解)

    基于MySQL的存储引擎与日志说明(全面讲解)

    下面小编就为大家分享一篇基于MySQL的存储引擎与日志说明(全面讲解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 深入理解MySQL的行级锁

    深入理解MySQL的行级锁

    锁是协调多进程或线程并发访问资源的机制,对于数据库而言,保证数据并发访问的一致性和有效性至关重要,本文主要介绍了MySQL的行级锁,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • mysql如何将id重新修改为递增

    mysql如何将id重新修改为递增

    这篇文章主要介绍了mysql如何将id重新修改为递增,本文模拟场景结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • mysql主从复制的实现步骤

    mysql主从复制的实现步骤

    本文主要介绍了mysql主从复制的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • mysql 8.0.16 Win10 zip版本安装配置图文教程

    mysql 8.0.16 Win10 zip版本安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 8.0 Win10 zip版本安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • mysql如何获取时间整点

    mysql如何获取时间整点

    这篇文章主要介绍了mysql如何获取时间整点问题,具有很好的的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • MySQL导入与导出备份详解

    MySQL导入与导出备份详解

    大家好,本篇文章主要讲的是MySQL导入与导出备份详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • MySQL隐式类型的转换陷阱和规则

    MySQL隐式类型的转换陷阱和规则

    这篇文章先是通过一个实例给大家讲述在MySQL隐式类型的转换时遇到的陷阱,而后给大家介绍了MySQL隐式类型的规则,对大家操作mysql隐式类型的时候具有一定的参考借鉴价值,下面来一起看看吧。
    2016-09-09

最新评论