• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

MySQL 索引的最左前缀原则

互联网 diligentman 4周前 (01-31) 14次浏览

什么是最左前缀原则

如果一个索引包含了多个列,查询必须从索引的最左前列开始,并且不能跳过索引中的列。

使用示例

创建索引

ALTER TABLE `staffs` ADD INDEX idx_staffs_nameAgePos(`name`, `age`, `pos`);

使用单列的全值匹配查询:

EXPLAIN SELECT * FROM staffs WHERE `name`='July';

MySQL 索引的最左前缀原则

使用两列的全值匹配查询:

EXPLAIN SELECT * FROM staffs WHERE `name`='July' AND age=25;

MySQL 索引的最左前缀原则

使用三列的全值匹配查询:

EXPLAIN SELECT * FROM staffs WHERE `name`='July' AND age=25 AND pos='dev';

MySQL 索引的最左前缀原则


不是从最左前列开始,不能使用索引

EXPLAIN SELECT * FROM staffs WHERE age=25 AND pos='dev';

MySQL 索引的最左前缀原则

不是从最左前列开始,不能使用索引

EXPLAIN SELECT * FROM staffs WHERE pos='dev';

MySQL 索引的最左前缀原则


从最左前列开始,但跳过了索引中的列,可以部分使用索引:

EXPLAIN SELECT * FROM staffs WHERE `name`='July' AND pos='dev';

MySQL 索引的最左前缀原则


程序员灯塔
转载请注明原文链接:MySQL 索引的最左前缀原则
喜欢 (0)