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

news/2024/7/24 4:23:04 标签: 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.niftyadmin.cn/n/5243176.html

相关文章

Ubuntu-rsyslog和systemd-journald日志服务

rsyslog日志服务 rsyslog作为传统的系统日志服务&#xff0c;把所有收集到的日志都记录到/var/log/目录下的各个日志文件中。 常见的日志文件如下&#xff1a; /var/log/messages 绝大多数的系统日志都记录到该文件 /var/log/secure 所有跟安全和认证授权等日志…

Python Opencv实践 - 简单的AR项目

这个简单的AR项目效果是&#xff0c;通过给定一张静态图片作为要视频中要替换的目标物品&#xff0c;当在视频中检测到图片中的物体时&#xff0c;通过单应矩阵做投影&#xff0c;将视频中的物体替换成一段视频播放。这个项目的所有素材来自自己的手机拍的视频。 静态图片&…

面向LLM的App架构——业务维度

这是两篇面向LLM的大前端架构的第一篇&#xff0c;主要写我对LLM业务的认知以及由此推演出的大前端架构。由于我是客户端出身&#xff0c;所以主要以客户端角度来描述&#xff0c;并不影响对前端的适用性。 对LLM的认知 基于Google对AGI的论文&#xff0c;AGI或者LLM一定会朝…

一文读懂MySQL基础知识文集

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

10-tornado项目部署

1. python3的安装和配置 1.1 安装系统依赖包 sudo dnf install wget yum-utils make gcc openssl-devel bzip2-devel libffi-devel zlib-devel -y1.2 下载Python wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz1.3 解压 tar xzf Python-3.9.5.tgz 1.4 安装…

IDEA加载阿里Java规范插件

IDEA加载阿里巴巴Java开发手册插件&#xff0c;在写代码的时候会自动扫描代码规范。 1、打开Settings 2、打开Plugins 3、搜索Alibaba Java Code Guidelines&#xff08;XenoAmess TPM&#xff09;插件&#xff0c;点击Install进行安装&#xff0c;然后重启IDE生效。 4、鼠标右…

:deep(){} 样式穿透不生效问题解决方案

在我们写vue的项目的时候&#xff0c;可能会遇到这种情况&#xff0c;父子组件&#xff0c;在父组件中使用了样式穿透给子组件的类添加样式&#xff0c;结果失败了。比如下面这种情况。 父组件 <template><p>我是父组件</p><Son /> </template>…

微信小程序base64与十六进制相互转换(使用btoa、atob方法报undefined)

前言&#xff1a;搜到很多方法都用到了btoa()、atob()&#xff0c;这两个属于Window 对象&#xff0c;在浏览器端可以直接使用&#xff0c;但是在小程序里面使用会报undefined。看到uniapp和微信小程序官方文档都提供了下面两个api&#xff0c;就想着经过ArrayBuffer 对象转换一…