当前位置: 洪哥笔记 > MySQL > MySQL索引覆盖

 

MySQL索引覆盖


关键词

MySQL 索引覆盖

摘要

本文介绍MySQL中如何创建和使用索引覆盖,使用索引覆盖可以极大的提高查询效率!

什么是“索引覆盖”?
简单来的说,就是让查询的字段(包括where子句中的字段),都是索引字段。索引覆盖的好处是什么?好处是极大的、极大的、极大的提高查询的效率!重要的说三遍!

特别说明:
1、where条件中如果使用like关键词,即使字段是索引中的,也不构成索引覆盖。
2、单个字段的索引,对于搜索单个where条件有较好的效果。但索引覆盖需要使用多字列索引。

假设创建一个zaho_user表:
CREATE TABLE `zaho_user` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT,
  `insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `u_name` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名',
  `u_sex` tinyint(4) NOT NULL DEFAULT '1' COMMENT '性别',
  `u_desc` varchar(200) NOT NULL DEFAULT '' COMMENT '介绍'
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT '用户表';

这里我们创建一个索引:
alter table `zaho_user` add index (`u_name`,`insert_time`,`u_sex`);

那么,我们执行如下查询时,效率将会非常高:
select `u_name`,`insert_time` from `zaho_user` where `u_sex`=1
例子中的三个字段:`u_name`,`insert_time`,`u_sex`创建了一个多列索引,而SQL查询时形成了索引覆盖。

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:MySQL索引覆盖:http://www.splaybow.com/post/mysql-index-cover-63708.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:115085382!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« MySQL创建索引,各种索引的创建及举例 MySQL表如何选择MyISAM和InnoDB引擎 »

相关文章:

mysql的超大数字类型bigint  (2020/2/22 12:23:14)

MySQL如何跟踪sql语句各阶段性能开销  (2019/11/15 13:48:59)

MYSQL表损坏与修复  (2019/9/16 9:48:33)

MySQL中去除字段中的回车符和换行符  (2017/12/11 15:38:09)

MySQL中使用replace函数  (2017/9/11 7:56:39)

MySQL中的外键约束  (2017/7/21 7:19:52)

MySQL内置随机数函数的使用  (2017/2/11 7:23:46)

MySQL表如何选择MyISAM和InnoDB引擎  (2017/1/7 7:23:00)

MySQL索引覆盖  (2017/1/4 7:06:51)

MySQL创建索引,各种索引的创建及举例  (2018/2/1 7:55:28)