面试题答案
一键面试最左匹配原则原理
MySQL联合索引的最左匹配原则是指,在使用联合索引时,查询条件从索引的最左边开始依次匹配,只有当左边的列被使用到了,右边的列才有可能被用到。这是因为MySQL的索引结构是B+树,联合索引的B+树节点存储的是索引列的组合值,并且按照索引定义的顺序排序。如果查询条件不满足从最左边开始匹配,索引就无法按照顺序快速定位数据,只能进行全表扫描。
满足最左匹配原则的SQL查询示例
- 完全匹配 假设存在联合索引(col1, col2, col3),如下查询能高效利用该联合索引:
SELECT * FROM your_table
WHERE col1 = 'value1' AND col2 = 'value2' AND col3 = 'value3';
- 部分匹配 查询只使用前两列,也能利用联合索引:
SELECT * FROM your_table
WHERE col1 = 'value1' AND col2 = 'value2';
- 最左前缀匹配 只使用第一列同样可以利用联合索引:
SELECT * FROM your_table
WHERE col1 = 'value1';
不满足最左匹配原则的SQL查询示例
- 跳过最左列 如下查询无法利用联合索引,因为跳过了col1:
SELECT * FROM your_table
WHERE col2 = 'value2' AND col3 = 'value3';
- 无序匹配 查询条件顺序与索引顺序不一致且未满足最左匹配,也无法利用联合索引:
SELECT * FROM your_table
WHERE col2 = 'value2' AND col1 = 'value1';