MySQL数据库索引的最左匹配原则((a),(a,b),(a,b,c)都能用到索引,(a,c)呢?)
MySQL数据库索引的最左匹配原则
- 一. 联合索引说明
- 二. 那ac是否能用到索引呢?
- 三. 思考
- 四. 最左匹配原则的成因
一. 联合索引说明
- 建立三个字段的联合索引
- 联合索引(a,b,c)相当于建立了索引:(a),(a,b),(a,b,c)
二. 那ac是否能用到索引呢?
先给出结论:a可以命中联合索引(a,b,c),c无法命中,所以ac组合无法命中联合索引。
1.建立abc联合索引(province,city,district)
- ac索引查询
SELECT * FROM user_address WHERE province = '广东'
AND district = '南雄市'
显示查询范围是ALL
2.直接建立ac两个字段得联合索引
SELECT * FROM user_address WHERE province = '广东'
AND district = '南雄市'
查询结果是ref走了索引,扫描的行数也从21行变成了13行
3.ab索引查询
查询范围为ref
结论
- abc联合索引,ac中的c不能命中这三个字段的联合索引,a可以命中,所以possible_keys列会显示使用了联合索引
三. 思考
abc索引,acb会走索引吗?
- 最左前缀匹配原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,
- 比如a=3 and b=4 and c>5 and d=6如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
- =和in可以乱序,比如a=1 and b=2 and c=3建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式
四. 最左匹配原则的成因
- 因为联合索引,如:abc,联合索引可以理解为有序的且形成的基础是建立在a上的,从a上建立b,b上建立c,所以必须要按照顺序来
- 可以简单理解为:先对a排序建立索引,再在a的基础上对b进行排序,再是c
- 所以联合索引在遇到范围查询,后面的索引会失效。
MySQL数据库索引的最左匹配原则((a),(a,b),(a,b,c)都能用到索引,(a,c)呢?)相关推荐
- 联合索引的最左匹配原则的成因
联合索引的最左匹配原则的成因 上面我们只看的是单一的索引,接下来咱们来看看联合索引,也就是回答第二个问题.联合索引的最左匹配原则的成因.什么是联合索引呢,就是由多列组成的索引了.那亦要了解其成因,那先 ...
- mysql组合索最左_MySQL组合索引和最左匹配原则
可以看到该查询使用到了索引 EXPLAIN SELECT * FROM student WHERE id = 2 AND name = 'defghijk' and age = 8; 可以看到该查询使 ...
- MySQL索引之最左匹配原则
简介 这篇文章的初衷是很多文章都告诉你最左匹配原则,却没有告诉你,实际场景下它到底是如何工作的,本文就是为了阐述清这个问题. 准备 为了方面后续的说明,我们首先建立一个如下的表(MySQL5.7),表 ...
- MySql 索引的最左匹配原则举例详解
最左匹配原则 最左匹配原则就是指在联合索引中,如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配. 例如某表现有索引(a,b,c),现在你有 ...
- 【实测版】联合索引,最左匹配原则,走?不走?
本文基本基于Explain做分析,如果不太了解可以先移步下文(。・ω・。)ノ 了解MySQL的Explain,读这一篇够了( ̄∇ ̄)/ 开始✊✊✊ 建表 我们先创建一个表 CREATE TABLE ` ...
- Mysql数据库开发的36条原则
2019独角兽企业重金招聘Python工程师标准>>> 前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 ...
- [转]Mysql数据库开发的36条原则
前言 这些原则都是经历过实战总结而成 每一条原则背后都是血淋淋的教训 这些原则主要是针对数据库开发人员,在开发过程中务必注意 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏以后,才记得曾有人提醒 ...
- 深度解密Mysql数据库索引
文章目录 深度理解Mysql数据库索引 Mysql索引的基本概念 索引分类 Mysql中索引的语法 创建索引 删除索引 查看表中的索引 查看查询语句使用索引的情况 索引的优缺点 优点 缺点 索引的实现 ...
- 【面试题笔记-Java】MySQL数据库、索引、MVCC等知识点(自己整理)
MySQL 1.MySQL的索引 索引就是帮助MySQL高效获取数据排好序的数据结构 索引数据结构: 二叉树 红黑树 hash表 B树 1.单指索引一个索引只包含单个列,一个表可以有多个单列索引 2. ...
最新文章
- eBCC性能分析最佳实践(1) - 线上lstat, vfs_fstatat 开销高情景分析...
- python3.6执行pip3时 Unable to create process using ''
- iOS使用Charts框架绘制—柱形图
- thinkphp htmlspecialchars_decode
- 深度学习之眼睛状态识别混淆矩阵的绘制
- vue 移动端头像裁剪_使用vue-cropper裁剪正方形上传头像-阿里云开发者社区
- php日志文件过大,Windows服务器系统下Apache的error.log文件过大的解决办法
- java $表示什么_java – 变量名中$的含义是什么?
- PAT 1044. 火星数字
- Android BLE开发之Android手机与BLE终端通信
- ASP.NET MVC架构与实战系列之三:MVC控件解析
- 【模拟信号】基于matlab抑制载波双边带调幅信号产生+解调【含Matlab源码 985期】
- Android学习笔记五:基本视图组件:Button
- java限制输入字符长度_input限制输入长度
- 7-2 整数的因子 (10 分)
- 51单片机实战教程(四 延时程序)
- php tp 聚合数据接口,TP5结合聚合数据天气预报API查询天气
- AI_综述----图像分割综述
- Ubuntu Desktop LTS - 文件完整路径
- 如何查看路由器的宽带连接密码