当前位置:网站首页>联合索引的左匹配原则
联合索引的左匹配原则
2022-07-06 06:08:00 【雪峰.贵】
联合索引:
key : ‘index_name_age’(‘name’,‘age’)
场景:
case1:
select * from person_info where name='gxf' and age = '18';
此时会走 index_name_age 联合索引。
case2:
select * from person_info where name='gxf' ;
此时会走 index_name_age 联合索引。
case3:
select * from person_info where age = '18';
此时不会走 index_name_age 联合索引。会全表扫描。
注意
1.最左前缀 匹配原则
mysql会一直向右匹配 直到遇到 > 、< 、 between 、like 就停止匹配。
where a=1 and b=2 and c=3 and d>4;
如果建立 index(a,b,d,c) 则c是用不到索引的。
如果建立 index(a,b,c,d) 则都可用到索引。
如果建立 index(b,c,a,d) 则都可用到索引。
2.= 和 in
可以乱序
如果建立 index(a,b,c,d)。
where a=1 and b=2 and c=3 and d in(4,5);
where a=1 and d in(4,5) and b=2 and c=3 ;
都可走索引,因为mysql会优化你的SQL把顺序调整成可以使用索引的形式。
为什么case3不走联合索引:
假设:现在有个联合索引 index(col3,col2);
则,联合索引文件里就会存储一个B+树,叶子节点会存储两个Alice的行数据,并且会在此基础上,再根据col2排序。最终结果:34的Alice排在了77的Alice的前面。
现在 where col3 = ‘Alice’ and col2=34; 则会先找到叶子节点,再去找34。即走了索引。
若 where col2 = 34;则这个联合索引文件存的B+树就用不了了。即不能走索引。
边栏推荐
- leaflet 地图
- selenium源码通读·9 |DesiredCapabilities类分析
- Seven imperceptible truths in software testing
- Luogu p1460 [usaco2.1] healthy Holstein cows
- LeetCode 739. 每日温度
- 多线程应用的测试与调试
- How to use the container reflection method encapsulated by thinkphp5.1 in business code
- 测试周期被压缩?教你9个方法去应对
- 2022 software testing workflow to know
- 曼哈顿距离与曼哈顿矩形-打印回字型矩阵
猜你喜欢
随机推荐
Seven imperceptible truths in software testing
Gtest之TEST宏的用法
Function of contenttype
H3C S5820V2_ Upgrade method after stacking IRF2 of 5830v2 switch
【C语言】qsort函数
MySQL之数据类型
公司视频加速播放
进程和线程的理解
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
What are the test sites for tunnel engineering?
isam2运行流程
Bit operation rules
SQLMAP使用教程(三)实战技巧二
Réflexions sur la sécurité des données (réimpression)
【LeetCode】Day96-第一个唯一字符&赎金信&字母异位词
JMeter做接口测试,如何提取登录Cookie
黑猫带你学UFS协议第4篇:UFS协议栈详解
Redis6 cluster setup
[postman] collections - run the imported data file of the configuration
About PHP startup, mongodb cannot find the specified module