当前位置: 首页 > news >正文

MySql中索引失效的情况及原因

 1.索引失效的情况


b15b654e4b2842679c522e23772c5988.png

这是正常查询情况,满足最左前缀,先查有先度高的索引。

1.

c742b1cb94fb4043b781f7556db377b7.png

注意这里最后一种情况,这里和上面只查询 name = '小米科技' 的命中情况一样。说明索引部分丢失!

2.

ef2d266c71f549669181280c2765077f.png

这里第二条sql中的,status > '1'  就是范围查询

3.

3b16db3340ca4170b614f3b2aa34b8f5.png

这里sql中对name索引进行了截取,导致索引失效。

4.

4074e42f369a4935aa2da42ef7514752.png

发送类型转换,导致索引失效。

5.

b56372c619a344b8be728c6a1c063772.png

dc946e2a9e1842d0bcfef1f34c406726.png


2.索引为什么失效

如图:多个键值的B+树,如果要排序的话,要先按照第一个元素的大小排序,在第一个元素相同的情况下,按照第二个元素进行排序,以此类推...

        1.为什么要遵从最左前缀法则就很好理解了:如果跳过前面的元素,比如说直接使用联合索引中第二个元素进行查询,那么对于该索引,整个二叉树是无序的

        2.为什么范围查询右边的索引会失效:

这个例子中:我们尝试使用索引查询:a > 1,b = 1的数据。可以看到索引b完全就是无序的,这个无序不但体现在叶子节点,非叶子节点也是如此,整棵树都是如此。

        3.模糊查询导致索引失效:我们知道 a like "%c%" 和 a like "%c" 都会导致索引失效。

这是因为索引如果按照字符串顺序排序,如:aab、aac、aad、baa、bab 都是先按照第一个字母排序,第一个字母相同的情况下按照第二个字母排序。如果使用"%c%" 和 "%c" 去匹配,都成无需的了,因为前面的字母没确定,和最左前缀法则类似。

相关文章:

  • CSS开发全攻略
  • ubuntu2204操作系统使用可执行文件方式安装docker-compose记录
  • Qt网络编程——QUdpSocket
  • [大语言模型-论文精读] MoRAG - 基于多部分融合的检索增强型人体动作生成
  • [C++][程序退出]详细讲解
  • C++【类和对象】(取地址运算符重载与实现Date类)
  • Jenkins提示Host key verification failed的解决办法
  • RabbitMQ 消息队列:生产者与消费者实现详解
  • how to remove the text shadow under app icon on Windows
  • Java 编码系列:反射详解与面试题解析
  • 更新系统提示“系统备份失败”
  • 工厂模式与建造者模式的区别
  • 【js】Node.js的fs的使用方法
  • Spring源码学习:SpringMVC(3)mvcannotation-driven标签解析【RequestMappingHandlerMapping生成】
  • 技术成神之路:设计模式(十六)代理模式
  • JS 中的深拷贝与浅拷贝
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 3.7、@ResponseBody 和 @RestController
  • Android系统模拟器绘制实现概述
  • js ES6 求数组的交集,并集,还有差集
  • JS+CSS实现数字滚动
  • miaov-React 最佳入门
  • MySQL的数据类型
  • PHP那些事儿
  • Quartz初级教程
  • React Transition Group -- Transition 组件
  • vue.js框架原理浅析
  • 从重复到重用
  • 基于游标的分页接口实现
  • 计算机常识 - 收藏集 - 掘金
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 两列自适应布局方案整理
  • 每天一个设计模式之命令模式
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 微信开放平台全网发布【失败】的几点排查方法
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • $.ajax()方法详解
  • (1)常见O(n^2)排序算法解析
  • (day6) 319. 灯泡开关
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (编译到47%失败)to be deleted
  • (算法)Travel Information Center
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)ABI是什么
  • (转)linux 命令大全
  • (转)大型网站架构演变和知识体系
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *2 echo、printf、mkdir命令的应用
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题