#数据库说明
使用的table emp如下:

CREATE TABLE emp(id INT(11) NOT NULL AUTO_INCREMENT,empno INT NOT NULL,NAME VARCHAR(20) DEFAULT NULL,age INT(3) DEFAULT NULL,deptid INT(11) DEFAULT NULL,PRIMARY KEY (id)
)
ENGINE = INNODB AUTO_INCREMENT=1 DEFAULT CHARSET =utf8;

然后在其中随机插入500000条数据

尝试建立age_name_deptid顺序的复合索引,并查询执行情况

CREATE INDEX idx_age_name_deptid ON emp(age, NAME, deptid);EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.`age`=30
AND emp.name='abcd'
AND emp.`deptid`=4;

结果如下:

以上为索引正常使用情况,可以看到在使用索引后,物理行由500000减少到1,提高了效率。下面以此为基础介绍七种索引失效情形

**


1. 情形1 第一个位置缺少查询项


**

CREATE INDEX idx_age_name_deptid ON emp(age, NAME, deptid);EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE  emp.name='abcd' AND emp.`deptid`=4;

结果如下:

物理行rows接近500000,可见查询结果为全表查询


2. 情形2 索引中断,则中断后面部分的索引无效

EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age=30 AND emp.`deptid`=4;

结果如下:

可见,虽然查询的物理行下降到4万多,但比全表扫描效率高,但比最佳情况要差。这是因为已建立的索引顺序为age_name_deptid,而这个查询为age_deptid,在name处中断了,中断后的索引失效。

3. 情形3 在索引列上使用函数

CREATE INDEX idx_name ON emp(NAME);EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.`name` LIKE 'abc%';
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE LEFT(emp.`name`,3) = 'abc';

第一条查询结果

第二条查询结果

4. 情形4 存储引擎不能使用索引中范围条件右边的列**

EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age=30 AND emp.`deptid`=4 AND emp.name='abcd';
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE emp.age=30 AND emp.`deptid`>=4 AND emp.name='abcd';

5. 情形5 出现不等于时不能使用索引

EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE  emp.`deptid`=4;CREATE INDEX idx_deptid ON emp(deptid);EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE  emp.`deptid`=4;
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE  emp.`deptid`<>4;

结果如下:

*6. 情形6 is not null无法使用索引,但is null可以使用索引

EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE age IS NULL;
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE age IS NOT NULL;

7. 情形7 like‘%xxx’时索引失效*

EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE NAME LIKE 'abc';
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE NAME LIKE 'abc%';
EXPLAIN SELECT SQL_NO_CACHE * FROM emp WHERE NAME LIKE '%abc';

MySQL复合索引中七种常见的索引失效情形相关推荐

  1. 算法中七种常见的时间复杂度

    这是我的推广信息,以激励自己更好的分享自己的知识和经验!也希望看到的你能够多多支持,谢谢! 1. 滴滴云AI大师: 目前滴滴云正在大力推广自己的云计算服务,需要购买的朋友们用我的AI大师码 「2049 ...

  2. mysql四种常用的索引_四种常见的索引类型

    主键索引:数据记录里面不能有 null,数据内容不能重复,在一张表里面不能有 多个主键索引. 普通索引:使用字段关键字建立的索引,主要是提高查询速度 唯一索引:字段数据是唯一的,数据内容里面能否为 n ...

  3. MySQL 性能优化:8 种常见 SQL 错误用法!

    声明:转载自 MySQL 性能优化:8 种常见 SQL 错误用法! 1.LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如对于下面简单的语句,一般 DBA 想到的办法是 ...

  4. Java中 9 种常见的 CMS GC 问题分析与解决

    目录 Java中 9 种常见的 CMS GC 问题分析与解决 1. GC 1.1 引言 1.2 概览 2. GC 基础 2.1 基础概念 2.2 JVM 内存划分 2.3 分配对象 2.4 收集对象 ...

  5. IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解

    IoT物联网嵌入式设备中30种常见传感器模块简介及原理讲解 0.前言 一.光学传感器模块: 1. 光敏传感器模块: 2. 红外避障模块 3. 循迹传感器模块 4. U型光电传感器模块 5. 红外接收模 ...

  6. 七种常见的数据分析法之:可行域分析

    导读 福格模型的触发有效区,我们就将其称之为可行域.那么,可行域分析该怎么用呢? 大数据产业创新服务媒体 官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC ...

  7. 七种常见的数据分析方法拆解

    数据分析一直是互联网人辨别方向的不二法门,我们通过对数据的观测来判断事物的发展趋势,也常常利用数据的思维来辩证的为决策做参考. 下面就给大家详细拆解七种常见的数据分析法,让我们的数据分析少走弯路. 0 ...

  8. 七种常见的排序算法总结

    目录 引言 1.什么是排序? 2.排序算法的目的是什么? 3.常见的排序算法有哪些? 一,插入排序 1.基本思想 2.代码实现 3.性能分析 4.测试 二,希尔排序(缩小增量排序) 1.基本思想 2. ...

  9. Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面、索引行复合索引中的一个切面

    Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面.索引行复合索引中的一个切面 目录

最新文章

  1. python中国大学排名爬虫写明详细步骤-Python之爬虫-中国大学排名
  2. Thread.currentThread().getContextClassLoader().getResourceAsStream()读取配置文件
  3. uboot中变量env(收集)
  4. Intellij idea添加单元测试工具
  5. 阿里如何面试MySQL优化CPU消耗
  6. Java面试汇总:Java基础(一)
  7. linux dns区域传送,Linux DNS服务器主从复制及区域传送
  8. 测试面试话题4: 如何制定测试计划
  9. 4、Spring Cloud-负载均衡 Ribbon
  10. Debian - RAID5搭建(热备)
  11. Gitlab-API各状态码解释
  12. 图书租赁管理系统 图书馆借书还书 计算机毕设项目
  13. MongoDB创建数据库
  14. 中美科学家造出“人-猴胚胎”,这会是魔幻剧情的开端吗?
  15. C#设计模式(22)——访问者模式(Vistor Pattern)
  16. dns服务器地址显示fec0,DNS服务器地址为fec0
  17. Django之自定义 form 表单上传图片
  18. c++ 正则表达式验证手机号码
  19. warning: implicit declaration of function ‘XXX’; did you mean ‘YYY’? [-Wimplicit-function-declarati
  20. eacharts和eacharts-gl、3d饼图、3d柱状图加折线图、下载gl报错解决

热门文章

  1. Caddy 反向代理 Portainer
  2. 动员计算机二级考试主题班会,考前动员主题班会
  3. Photoshop-消失点滤镜做透视图
  4. 政治生态档案监督管理系统勾勒完整廉洁画像,推进廉政建设纵深发展
  5. Android 垃圾分类APP(六)网络处理
  6. Ubuntu开启防火墙端口
  7. mongodb 搜索速度_Mongodb查询缓慢问题处理
  8. 知识付费与内容变现领域的会员体系设计
  9. 记 linux 下面初次使用的convert 工具完成拼长图功能
  10. 计算机基础电子表格教案ppt,《计算机应用基础》电子教案.ppt