当前位置:网站首页>联合索引的左匹配原则
联合索引的左匹配原则
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+树就用不了了。即不能走索引。
边栏推荐
猜你喜欢
随机推荐
Overview of three core areas of Mathematics: algebra
【无App Push 通用测试方案
[API interface tool] Introduction to postman interface
H3C firewall rbm+vrrp networking configuration
黑猫带你学eMMC协议第10篇:eMMC读写操作详解(read & write)
Arrays and collections
JMeter做接口测试,如何提取登录Cookie
[web security] nodejs prototype chain pollution analysis
Huawei BFD configuration specification
【Postman】测试(Tests)脚本编写和断言详解
GTSAM中李群的运用
技术分享 | 常见接口协议解析
Database: ODBC remote access SQL Server2008 in oracel
对数据安全的思考(转载)
Configuring OSPF GR features for Huawei devices
Cannot create PoolableConnectionFactory (Could not create connection to database server. 错误
Significance of unit testing
多线程应用的测试与调试
How Huawei routers configure static routes
黑猫带你学UFS协议第4篇:UFS协议栈详解









![[wechat applet] build a development tool environment](/img/f6/51f97b1c927337b34c5b3a4207abb4.png)