当前位置:Gxlcms > 数据库问题 > MySQL组合索引和最左匹配原则

MySQL组合索引和最左匹配原则

时间:2021-07-01 10:21:17 帮助过:14人阅读

   可以看到该查询使用到了索引

  1.   EXPLAIN SELECT * FROM student WHERE id = 2 AND name = ‘defghijk‘ and age = 8;

    可以看到该查询使用到了索引

  1.   EXPLAIN SELECT * FROM student WHERE id = 2 AND age = 8;

       可以看到该查询使用到了索引

  1.   EXPLAIN SELECT * FROM student WHERE name = ‘defghijk‘ AND age = 8;

       可以看到该查询没有使用到索引,类型为index,查询行数为4989449,几乎进行了全表扫描,由于组合索引只针对最左边的列进行了排序,对于name、age只能进行全部扫描

  1.   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   

人气教程排行