**1 联合索引不满足最左匹配原则 **

在联合索引中,最左侧的字段优先匹配。因此,在创建联合索引时,where子句中使用最频繁的字段放在组合索引的最左侧。

而在查询时,要想让查询条件走索引,则需满足:最左边的字段要出现在查询条件中。

** 2使用了select ***

【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。
说明:1)增加查询分析器解析成本。2)
增减字段容易与 resultMap 配置不一致。3)
无用字段增加网络 消耗,尤其是 text 类型的字段。

3 索引列参与运算

即便id列有索引,由于进行了计算处理,导致无法正常走索引。针对这种情况,其实不单单是索引的问题,还会增加数据库的计算负担。

4 索引列参使用了函数

索引列使用了函数(SUBSTR,字符串截取),导致索引失效。此时,索引失效的原因与第三种情况一样,都是因为数据库要先进行全表扫描,获得数据之后再进行截取、计算,导致索引索引失效。同时,还伴随着性能问题。

5 错误的Like使用

方式一:like ‘%abc’;
方式二:like ‘abc%’;
方式三:like ‘%abc%’;
其中方式一和方式三,由于占位符出现在首部,导致无法走索引。这种情况不做索引的原因很容易理解,索引本身就相当于目录,从左到右逐个排序。而条件的左侧使用了占位符,导致无法按照正常的目录进行匹配,导致索引失效就很正常了。第五种索引失效情况:模糊查询时(like语句),模糊匹配的占位符位于条件的首部。

6 类型隐式转换

参数类型与字段类型不匹配,导致类型发生了隐式转换,索引失效

7、使用OR操作

查询条件使用or关键字,其中一个字段没有创建索引,则会导致整个查询语句索引失效; or两边为“>”和“<”范围查询时,索引失效。

8 两列做比较

如果两个列数据都有索引,但在查询条件中对两列数据进行了对比操作,则会导致索引失效。这里举个不恰当的示例,比如age小于id这样的两列(真实场景可能是两列同维度的数据比较,这里迁就现有表结构):

9 不等于比较

当查询条件为字符串时,使用”<>“或”!=“作为条件查询,有可能不走索引,但也不全是。

10 is not null

查询条件使用is null时正常走索引,使用is not null时,不走索引。

11 not in和not exists

查询条件使用not in时,如果是主键则走索引,如果是普通索引,则索引失效。

12 order by导致索引失效

主键使用order by索引有效
:当查询条件涉及到order by、limit等条件时,是否走索引情况比较复杂,而且与Mysql版本有关,通常普通索引,如果未使用limit,则不会走索引。order by多个索引字段时,可能不会走索引。其他情况,建议在使用时进行expain验证

13 参数不同导致索引失效

当查询条件为大于等于、in等范围查询时,根据查询结果占全表数据比例的不同,优化器有可能会放弃索引,进行全表扫描。

Mysql 索引失效场景相关推荐

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

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

  2. Mysql索引失效场景集合

    我们经常会遇到两种情况: 明明在某个字段上加了索引,但实际上并没有生效. 索引有时候生效了,有时候没有生效. 索引失效的场景汇总如下: 使用select * 索引列上有计算操作 索引列上有函数操作 字 ...

  3. mysql 数据倾斜 索引_索引,索引优化,mysql索引失效场景

    索引 保证数据完整性. 关注索引的两个点:树和有序(树可以定位索引的起点,有序可以定位索引的终点) 1.每个表都是一个索引组织表(集群表) 以主键来组织的一个表 主键索引 2.其他索引都是二级索引 每 ...

  4. MYSQL索引失效场景

    1:索引字段使用了计算或者函数 2:索引字段数据类型不一致 比如索引字段是数字类型却传入了字符串类型 3:违反了最左匹配原则 使用(> < like between 等范围查询索引会无效 ...

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

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

  6. MySQL索引失效的几种常见场景

    前言 我们在使用MySQL查询数据的时候,总会遇见没有正确使用到索引的情况. 这里我们列举几种常见的,搜索条件使用了索引列却没有走索引的场景. (以下测试均在MySQL8.0.28中完成,且所有数据均 ...

  7. MySQL 索引失效详解

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

  8. mysql 索引失效分析

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

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

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

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

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

最新文章

  1. android自定义文件选择,关于安卓自定义本地文件选择库的实现
  2. gvim在windows下中文乱码的终极解决方案
  3. 计算机基础及ms office应用,全国计算机等级考试一级计算机基础及MS Office应用模拟练习系统...
  4. 在linux中查看端口信息,怎样在 Linux 上查看某个端口的相关信息?
  5. 聚焦场景落地, 看“云+AI”如何激发5G的“隐藏技能”
  6. [CQOI2015]任务查询系统
  7. 计算机二级web题目(4)--CSS基础
  8. ignite通过注解配置查询
  9. 7-27 通讯录的录入与显示 (10 分)
  10. php 请求header,PHP的curl查看header信息的功能(包括查看返回header和请求header)
  11. 力扣404. 左叶子之和(JavaScript)
  12. EasyUI的-表格设置
  13. 关于equals和==的几个注意点
  14. 调试经验——Windows10中iTunes不能识别iPad的解决方法
  15. cp: cannot create regular file ‘/root/queues.conf’: No space left on devic
  16. 国际域名转出与ICANN投诉流程(完结篇)
  17. OneNote 英文默认字体修改方法(2020.10)
  18. Errors报错记录
  19. pycharm设置中文,字体颜色修改,设置背景图片(图文讲解)
  20. 学术-数学:黎曼猜想

热门文章

  1. [渝粤教育] 中央财经大学 宏观经济学 参考 资料
  2. 数据可视化专属配色方案
  3. App Store 隐私政策网址(URL)
  4. qq互联php教程,thinkphp5怎么整合qq互联登录教程
  5. 超声波传感器测距c语言编程,如何DIY一个属于你的超声波测距传感器三:程序的构思和设计...
  6. 面试官问:你的缺点是什么,这么回答漂亮!(真实案例)
  7. 静态码率(CBR)和动态码率(VBR)
  8. 2021年安全生产模拟考试(全国特种作业操作证高处作业-登高架设模拟考试题库一)安考星
  9. 台式电脑主板插线步骤图_台式电脑主板接线图解
  10. 01单片机——基础知识