案例所用的表结构、索引、与数据如下:


索引失效与优化

1、全值匹配我最爱

2、最佳左前缀法则(带头索引不能死,中间索引不能断)

如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始 并且 不跳过索引中的列。
正确的示例参考上图。

错误的示例:
带头索引死:

中间索引断(带头索引生效,其他索引失效):

3、不要在索引上做任何操作(计算、函数、自动/手动类型转换),不然会导致索引失效而转向全表扫描

4、mysql存储引擎不能继续使用索引中范围条件(bettween、<、>、in等)右边的列

5、尽量使用覆盖索引(只查询索引的列(索引列和查询列一致)),减少select *

6、索引字段上使用(!= 或者 < >)判断时,会导致索引失效而转向全表扫描

7、索引字段上使用 is null / is not null 判断时,会导致索引失效而转向全表扫描

8、索引字段使用like以通配符开头(‘%字符串’)时,会导致索引失效而转向全表扫描


由结果可知,like以通配符结束相当于范围查找,索引不会失效。与范围条件(bettween、<、>、in等)不同的是:不会导致右边的索引失效。

问题:解决like ‘%字符串%’时,索引失效问题的方法?
使用覆盖索引可以解决。

9、索引字段是字符串,但查询时不加单引号,会导致索引失效而转向全表扫描

10、索引字段使用 or 时,会导致索引失效而转向全表扫描

小总结

MySQL 索引失效案例相关推荐

  1. mysql索引失效_MySQL索引失效的底层原理详解,终于有人讲清楚了

    前言 吊打面试官又来啦,今天我们讲讲MySQL索引为什么会失效,很多文章和培训机构的教程,都只会告诉你,在什么情况下索引会失效. 比如:没遵循最佳左前缀法则.范围查询的右边会失效.like查询用不到索 ...

  2. like左匹配索引失效_导致MySQL索引失效的一些常见写法总结

    前言 最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢SQL,导致MySQL的CPU资源飙升,基于此,给大家简单分享下这些比较使用 ...

  3. MySQL 索引失效的 15 种场景!

    背景 无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑.常见的现象就是:明明在字段上添加了索引,但却并未生效. 前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参 ...

  4. MySQL 索引失效详解

    MySQL 索引失效详解 一.MySQL索引失效原因汇总 隐式的类型转换,索引失效 查询条件包含or,可能导致索引失效 like通配符可能导致索引失效 查询条件不满足联合索引的最左匹配原则 在索引列上 ...

  5. MySQL索引失效的9种情况(针对InnoDB存储引擎)

    前言 MySQL中提高查询性能的最有效的方式之一就是对数据表合理的设计索引,优秀的索引的设计方案很大程度上可以提高查询的性能. 因此,索引对查询的速度有着至关重要的影响. 为了尽量的使优化器用到我们的 ...

  6. 15个必知的Mysql索引失效场景,别再踩坑了

    背景 无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑.常见的现象就是:明明在字段上添加了索引,但却并未生效. 前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参 ...

  7. 详解MySQL索引失效的几种情况

    MySQL索引是提高查询效率的重要手段.索引失效会导致查询效率下降,甚至全表扫描,影响数据库性能.以下是可能导致MySQL索引失效的情况: 1. 使用or操作符 当where语句中使用or操作符并且o ...

  8. mysql 索引失效分析

    大神总结的索引失效一句话理解后就不用看我下面的文章了,这就是 "模型数空运最快" 模:模糊查询like  %在前面索引失效 型:数据类型有变化索引失效 数:索引列使用了函数索引失效 ...

  9. mysql索引失效索引创建原则

    一.mysql索引失效: 1.like 以%开头,索引无效:当like前缀没有%,后缀有%时,索引有效. 2.or语句前后没有同时使用索引. 当or左右查询字段只有一个是索引,该索引失效,只有当or左 ...

  10. 什么情况会导致 MySQL 索引失效?

    为了验证 MySQL 中哪些情况下会导致索引失效,我们可以借助 explain 执行计划来分析索引失效的具体场景. explain 使用如下,只需要在查询的 SQL 前面添加上 explain 关键字 ...

最新文章

  1. MySQL存储过程之事务管理
  2. linux webapi测试,Webapi管理和性能测试工具WebBenchmark
  3. Linux多线程工作笔记0002---C语言函数前面的*是什么意思
  4. Java线程安全策略
  5. 初学 Delphi 嵌入汇编[13] - 地址参数用 [] 取值
  6. sprintf参数包含本身时,结果并不符合预期
  7. WEEK5 周记 作业——差分数组_TT的魔法猫
  8. HTB打靶(Active Directory 101 Forest)
  9. android 怎么判断手机号是移动还是联通
  10. 大文件数据恢复-轻松恢复大于4GB的文件
  11. 海康威视视频在页面中展示
  12. Windows10 笔记本电脑移动硬盘设备未就绪
  13. 【能效管理】关于学校预付费水电系统云平台应用分析介绍
  14. 新手使用微信引流脚本,这两点你一定不能忽视
  15. 质数(素数)的概念和应用
  16. dialer(dialer接口是什么意思)
  17. 转换流(将字节流转换为字符流)
  18. Impala之02-原理、架构分析(1)
  19. 关于PL2303用于STC单片机下载的讨论
  20. 微博网页版登录参数SP

热门文章

  1. 爬虫_淘宝(selenium)
  2. react-router使用总结
  3. Maven 打包错误:%JAVA_HOME%/../lib/tools.jar
  4. (转)用AGG实现高质量图形输出(四)
  5. Ext.Net学习笔记之动态加载TabPanel
  6. 树链剖分之点剖分(点分治)讲解
  7. linux定时备份Mysql
  8. 14.docker volumn
  9. 62. Event shiftKey 事件属性
  10. matlabR2017b 载入libsvm