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

Mysql中九种索引失效场景分析

表数据:
在这里插入图片描述
索引情况:
在这里插入图片描述
其中a是主键,对应主键索引,bcd三个字段组成联合索引,e字段为一个索引

情况一:不符合最左匹配原则

在这里插入图片描述
去掉b=1的条件后就不符合最左匹配原则了,导致索引失效
在这里插入图片描述

情况二:不正确的like查询

正常使用like:
在这里插入图片描述
不正确使用like:
在这里插入图片描述
当使用like模糊查询时,如果不以%或者_开头进行查询的话,索引还是有效的。

对索引进行了计算或者使用了函数

在这里插入图片描述
在这里插入图片描述

对索引进行了类型转换

e字段的类型是varchar类型,下面这个sql需要把e字段中的字符转换为数字,会导致索引失效
在这里插入图片描述

使用<>不等于导致索引失效

在这里插入图片描述
使用b=1时,索引有效,使用b<>1时索引失效

order by导致索引失效

就算利用索引,但是由于select * 所以需要回表查询(MySQL回表是一个数据库查询优化的概念,主要是针对数据表中所使用的索引并不能覆盖查询语句中所需要的所有字段而引发的问题。这时,MySQL就需要回到数据表中重新查找需要的数据,这也就是回表的含义。),而且回表成本比较高,所以不会走索引。
在这里插入图片描述
如果是select b就不需要回表了,此时就会选择走索引
在这里插入图片描述

使用or会导致索引失效

在这里插入图片描述

select * 导致查询失效

在这里插入图片描述

范围查询数据量过多导致索引失效

新增一些数据:
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/148054.html

相关文章:

  • Android RecyclerView 之 列表宫格布局的切换
  • 妈妈的爱依然深沉
  • net.ResolveTCPAddr(“tcp6“, address)
  • mysql和mybatisPlus实现:datetime类型的字段范围查询
  • 学习笔记:用ROS接收rosbag发布的topic
  • LAMP架构介绍配置命令讲解
  • C语言之函数题
  • SpringBoot的四种handler类型
  • 基于KNN算法的鸢尾花种类预测
  • 英语-面试
  • 文件传输协议
  • Llama-2大模型本地部署研究与应用测试
  • 白嫖idea
  • PyCharm切换虚拟环境
  • 自动化运维工具-----Ansible入门详解
  • 一、Mycat2介绍与下载安装
  • 链表的介绍
  • 深度剖析:数据服务API的安全性与隐私保护
  • MediaPlayer音频与视频的播放介绍
  • 【Terraform学习】Terraform模块基础操作(Terraform模块)
  • 改进的KMeans 点云聚类算法 根据体元中的点数量计算点密度,并获取前K个点密度最大的体元作为初始聚类中心(附 matlab 代码)
  • php user.ini详解
  • 用 PHP 和 JavaScript 显示地球卫星照片
  • Ubantu安装mongodb,开启远程访问和认证
  • 高手速成|数据库脚本生成工具
  • 振动国标2009GB/T 19873.2-2009/ISO 13373-2:2005笔记
  • SpringBoot中自定义starter
  • git-tf clone 路径有空格处理方案
  • IP 地址与域名是一对多的关系。一个 IP 地址可以对应多个域名,但一个域名只对应一个 IP地址。这句话如何理解?
  • DNS解析分类