MySQL组合索引和最左匹配原则
时间:2021-07-01 10:21:17
帮助过:14人阅读
可以看到该查询使用到了索引
-
EXPLAIN SELECT * FROM student WHERE id = 2 AND name = ‘defghijk‘ and age = 8;
可以看到该查询使用到了索引
-
EXPLAIN SELECT * FROM student WHERE id = 2 AND age = 8;
可以看到该查询使用到了索引
-
EXPLAIN SELECT * FROM student WHERE name = ‘defghijk‘ AND age = 8;
可以看到该查询没有使用到索引,类型为index,查询行数为4989449,几乎进行了全表扫描,由于组合索引只针对最左边的列进行了排序,对于name、age只能进行全部扫描
-
EXPLAIN SELECT * FROM student WHERE name = ‘defghijk‘ AND id = 2;
EXPLAIN SELECT * FROM student WHERE age = 8 AND id = 2;
EXPLAIN SELECT * FROM student WHERE name = ‘defghijk‘ and age = 8 AND id = 2;
可以看到如上查询也使用到了索引,id放前面和放后面查询到的结果是一样的,MySQL会找出执行效率最高的一种查询方式,就是先根据id进行查询
总结
如上测试,可以看到只要查询条件的列中包含组合索引最左边的那一列,不管该列在查询条件中的位置,都会使用索引进行查询。
MySQL组合索引和最左匹配原则
标签:RoCE lin 查询方式 ble 存在 number 测试表 roc where