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

MySQL最左匹配原则是什么

MySQL 索引的最左匹配原则是指在使用联合索引的过程中,查询条件必须从索引的最左侧开始匹配。如果联合索引包含多个列,查询条件必须包含第一个列,然后是第二个列,以此类推。
底层原理:联合索局部有序。比如建立联合索引 (a,b),b只在a为确定值时有序,在全局则乱序。

示例

为 (a,b,c) 建立联合索引

等值查找

以下符合联合索引

where a = 1
where a = 1 and b = 1
where a =1 and b = 1 and c = 1

以下不符合联合索引

where b = 1
where c = 1
where b =1 and c = 1

以下可能符合联合索引

where a = 1 and c =1

在5.6版本之前,只有 a = 1 这个条件可以用上索引。在 5.6 版本后有个优化,即索引下推,可以在引擎层面查询 a = 1 的数据后判断 c = 1,将筛选后的结果再返回到 server 层

范围查找

如果遇到范围查找 ( < , > ) 就会停止匹配

where a > 1 and b = 1 and c = 1

上面 a > 1 可以用到联合索引,b 和 c 无法用到,因为在 a > 1 的整体上 b 和 c 是无序的
如果遇到如 >=、<=、BETWEEN、前缀like(xx%)的范围查询,则不会停止匹配。

where a >= 1 and b = 1 and c = 1

以上查询等价于下面两条总和

where a = 1 and b = 1 and c = 1
where a > 1 and b = 1 and c = 1

在 a = 1 时,b,c 可以用到联合索引,在 a > 1 时 b,c无法用到联合索引


http://www.kler.cn/a/452004.html

相关文章:

  • PetaLinux 内核输出信息的获取方式
  • ReactPress 1.6.0:重塑博客体验,引领内容创新
  • 基于STM32F103控制L298N驱动两相四线步进电机
  • 突发!GitLab将停止对中国区用户提供GitLab.com账号服务
  • 【Web】2024“国城杯”网络安全挑战大赛决赛题解(全)
  • nlp新词发现——浅析 TF·IDF
  • 【开发问题记录】eslint9 中 eslint 和 prettier冲突
  • 《Cocos Creator游戏实战》非固定摇杆实现原理
  • C#Directory类文件夹基本操作大全
  • 微信小程序的轮播图学习报告
  • ChatGPT之父:奥尔特曼
  • spring boot的配置文件属性注入到类的静态属性
  • 图像处理-Ch7-图像金字塔和其他变换
  • WebPack3项目升级webpack5的配置调试记录
  • 计算机网络习题(第5章 网络层 第6章 传输层)
  • 基于3D-Speaker进行区分说话人项目搭建过程报错记录 | 通话录音说话人区分以及语音识别 | 声纹识别以及语音识别 | pyannote-audio
  • 学习threejs,THREE.CircleGeometry 二维平面圆形几何体
  • webrtc获取IceCandidate流程
  • 如何在 Ubuntu 22.04 上安装 phpMyAdmin
  • 记AI的遇见、使用和思考
  • vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
  • 使用 Python 为 PDF 添加水印
  • 【Android】BuildConfig类找不到(无法生成问题解决)
  • 【Golang 面试题】每日 3 题(四)
  • 安装k8s涉及命令(方便放到txt离线使用)
  • 常见设计原则