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

MySQL联合查询、最左匹配、范围查询导致失效

服务器版本
在这里插入图片描述
客户端:navicat premium16.0.11

联合索引

假设有如下表
在这里插入图片描述

  • 联合索引就是同时把多列设成索引,如(empno,ename)
  • 在查询的时候就会先按照empno进行查询,再按照ename进行查询
  • 其中empno是全局有序,ename是局部有序。什么意思呢?
    - B+树在构建的时候,由于联合索引遵循最左匹配原则,所以,按照从左往右的优先级进行选择,那么当遇到empno相同的时候,就会按照ename进行匹配。
    - 在这个过程中,ename只有在empno相同的时候才会进行匹配,那么他在之前就没有必要排序,在empno相同的时候有序即可。

最左匹配原则

  • 如果SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配,用上例(empno,ename)举例,只有当查询中where 后面出现empno,即联合索引中最左边的列,才会使用联合查询,单单使用where ename=×××是不会用到联合索引的
  • 注意! 当遇到范围查询(比如>、<、between、like)就会停止匹配。

小林coding中的实验结论不一致

  • 注意!在小林coding中说到,关于范围查询对联合索引的影响对于 >=、<=、BETWEEN、like 前缀匹配的范围查询,并不会停止匹配。并且给出了他的实验结果,但是在我自己的实验结果下,以上范围查询全部失效了,所以这个什么情况失效什么情况不失效,也是个迷,我还没搞清楚。
  • 实验结果就不贴了,就是设计好了表然后用navicat看执行结果解释中的type,key,key_len等字段,小林coding中有贴图演示

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

相关文章:

  • 将Excel文件的两个表格经过验证后分别读取到Excel表和数据库
  • ubuntu连接orangepi-zero-2w桌面的几种方法
  • ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结
  • Flutter Getx状态管理
  • 用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能
  • 【CSS】“flex: 1“有什么用?
  • 【EI会议征稿中】第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)
  • 云服务器与nas实现在冷热资源访问,nginx代理
  • 如何设置不同的网页标题(react)
  • 配置CentOS服务器以支持PHP
  • Python-算术运算符详解
  • 参数是Id,但要显示接口中的id对应的名称
  • Linux常用指令详解
  • TCP实现一对一聊天
  • 介绍 Apache Spark 的基本概念和在大数据分析中的应用。
  • 大数据-之LibrA数据库系统告警处理(ALM-37014 Gaussdb进程锁文件已经存在)
  • Web前端JS如何获取 Video/Audio 视音频声道(左右声道|多声道)、视音频轨道、音频流数据
  • 力扣每日一题:2646. 最小化旅行的价格总和(2023-12-06)
  • HarmonyOS4.0从零开始的开发教程05 应用程序入口—UIAbility的使用
  • C++EasyX之井字棋
  • 【华为数据之道学习笔记】3-1 基于数据特性的分类管理框架
  • 大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现
  • AIGC: 关于ChatGPT中基于Whisper模型实现音频转文本
  • Java利用UDP实现简单群聊
  • 做题笔记:SQL Sever 方式做牛客SQL的题目--VQ35
  • Java开源工具库Guava使用指南详解