什么是最左前缀原则
如果一个索引包含了多个列,查询必须从索引的最左前列开始,并且不能跳过索引中的列。
使用示例
创建索引:
ALTER TABLE `staffs` ADD INDEX idx_staffs_nameAgePos(`name`, `age`, `pos`);
使用单列的全值匹配查询:
EXPLAIN SELECT * FROM staffs WHERE `name`='July';
使用两列的全值匹配查询:
EXPLAIN SELECT * FROM staffs WHERE `name`='July' AND age=25;
使用三列的全值匹配查询:
EXPLAIN SELECT * FROM staffs WHERE `name`='July' AND age=25 AND pos='dev';
不是从最左前列开始,不能使用索引:
EXPLAIN SELECT * FROM staffs WHERE age=25 AND pos='dev';
不是从最左前列开始,不能使用索引:
EXPLAIN SELECT * FROM staffs WHERE pos='dev';
从最左前列开始,但跳过了索引中的列,可以部分使用索引:
EXPLAIN SELECT * FROM staffs WHERE `name`='July' AND pos='dev';
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。