MySQL组合索引,最左匹配原则失效

说明:在SQL优化时,建立组合索引,我们需要知道最左匹配失效的情况,本文通过实例介绍最左匹配原则失效;

建立组合索引

如下,是一张大表,有1000万条数据;

在这里插入图片描述

对表中password、sex和email字段建立组合索引。注意,建立组合索引,应当把区别度高的字段放在前面,如以上三个字段,密码字段是区别度最高的,故放在最前面;

alter table user add index idx_compose (password, sex, email);

查看执行计划

使用explain关键字,分别查询这些字段进行查询,查看执行计划;

password、sex、email字段,and查询

explain select * from user where password = 'c81e728d9d4c2f636f067f89cc14862c' and sex = 'male' and email = 'zhangsan2@163.com'

走了索引;

在这里插入图片描述


对password、sex字段,and查询

explain select * from user where password = 'c81e728d9d4c2f636f067f89cc14862c' and sex = 'male'

走了索引;

在这里插入图片描述


对password、email字段,and查询

explain select * from user where password = 'c81e728d9d4c2f636f067f89cc14862c' and email = 'zhangsan2@163.com'

只有一个字段走了索引;

在这里插入图片描述


单独对password、sex、email字段,and查询;

explain select * from user where password = 'c81e728d9d4c2f636f067f89cc14862c' and email = 'zhangsan2@163.com';explain select * from user where sex = 'male';explain select * from user where email = 'zhangsan2@163.com';

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


将字段调换,如sex、email、password,and查询;

explain select * from user where sex = 'male' and email = 'zhangsan2@163.com' and password = 'c81e728d9d4c2f636f067f89cc14862c';

还是都走了索引;

在这里插入图片描述

结论

如对表的A、B、C字段建立了组合索引,最左匹配原则失效是指:

当查询的字段从左开始,只有匹配了组合索引字段顺序的字段才会走索引,如AB字段,则均会走索引;AC字段,则A字段会走索引;BC字段,则均不会走索引;单独的A、B、C字段查询,因为只有A字段匹配上了组合索引,会走索引,B、C字段查询均不会走索引。

另外,最左匹配不包括SQL的书写顺序,如根据BCA字段查询,也会因为MySQL自身的优化,而走索引查询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/235563.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFmpeg架构全面分析

一、简介 它的官网为:https://ffmpeg.org/,由Fabrice Bellard(法国著名程序员Born in 1972)于2000年发起创建的开源项目。该人是个牛人,在很多领域都有很大的贡献。 FFmpeg是多媒体领域的万能工具。只要涉及音视频领…

virtualbox安装时报错:无法访问你试图使用的功能所在的网络位位置。旧版本的msi文件误删问题解决。

错误如下图所示: 无法访问你试图使用的功能所在的网络位位置。单击“确定”重试,或在下面的框中输入包含安装程序包“xxxxxxxxxxxxx.msi”的文件夹路径。 今天在帮同学安装时发生这个问题,然后各种网站搜索教程,最后也是花了将近…

【EI会议征稿通知】第七届结构工程与工业建筑国际学术会议(ICSEIA 2024)

第七届结构工程与工业建筑国际学术会议(ICSEIA 2024) 2024 7th International Conference on Structural Engineering and Industrial Architecture 随着城市化进程的不断深入,建筑领域的需求也在优化、调整。结构工程的发展依旧受到重视&am…

visionOS空间计算实战开发教程Day 10 照片墙

本例选择了《天空之城》的25张照片,组成5x5的照片墙)。首先我们在setupContentEntity方法中构建了一个纹理数组,将这25张照片添加到数组images中。其中封装了setup方法,借助于visionOS对沉浸式空间的支持,我们创建了三…

【玩转 EdgeOne】| 腾讯云下一代边缘加速CDN EdgeOne 是安全加速界的未来吗?

目录 前言边缘加速与安全加固边缘计算与CDN的融合EdgeOne优秀的安全特性EdgeOne卓越的性能表现灵活的配置和管理生态系统的支持与发展技术创新与未来展望EdgeOne试用结束语 前言 在当下互联网的迅猛发展的时刻,云计算和边缘计算技术的快速发展为网络加速领域带来了…

python中的条件用语

文章目录 ifelse语句elif语句条件嵌套range函数while循环for循环辗转相除法break语句continue语句循环中的else语句 if else语句 elif语句 条件嵌套 range函数 注: 1.不包含end的值 while循环 for循环 注: 在Python中,print(i, end)的意思是…

获取焦点后,样式异常的处理方法

问题 在使用monaco-editor 设置代码提示未正常显示,提示框出现,看不到内容,如图 看不到内容,有两种情况: 情况一:没有得到数据,所以没有展示; 情况二:得到了数据&#x…

收藏!7个小众宝藏的开发者学习类网站

1、simplilearn 地址:https://www.simplilearn.com/ simplilearn是全球排名第一的在线学习网站,它的课程由世界知名大学、顶级企业和领先的行业机构通过实时在线课程设计和提供,其中包括顶级行业从业者、广受欢迎的培训师和全球领导者。 2、…

hutool的bug之 DateUtil.endOfDay(DateUtil.date())

hutool 工具类DateUtil 使用时谨慎 DateUtil.endOfDay 得到的时间保存到数据时会增加一秒 首先比较下时间的long值: 这样就很明显的看出来,hutool工具类的date是毫秒位多了.999,保存到mysql 的时候,MySQL数据库对于毫秒大于500的数据进行…

C语言--各种循环详解(超详细)

一.为什么要学习C语言循环呢? 在C语言之中,运用好循环语句就是拥有了一个强大的武器,它可以帮助你完成许多工作. 有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第…

R语言30分钟入门

1. 环境&安装 R是支持win、linux合macos的 完整参考:https://zhuanlan.zhihu.com/p/596324321?utm_id0 主要是安装:1、R环境;2、rstudio开发环境(后面主要是用rstudio,也可以用vscode) 1.1. rstud…

敌手觊觎,核心研发项目源代码安全不可忽视!立即了解迅软DSE防泄密良策!

源代码作为企业的知识产权之一,也是企业的重要商业秘密,如果不慎被泄露可能会被竞争对手利用,对企业的业务和安全带来威胁以及不必要的法律风险。面对层出不穷的泄密事件,相关人员更应该提高对源代码的保护意识,加强企…