MySQL 最左前缀,一篇讲明白,面试实战都能用
MySQL 索引面试必问,实战也常用,最左前缀法则很多人一知半解,今天用最简单的话讲透,看完就会用。
一、什么是最左前缀
联合索引(a,b,c),必须从最左边的字段开始匹配,中间不能断,才能命中索引。
比如索引:idx_date_area_amount(date, area, amount)
命中索引的情况
- where date = ?
- where date = ? and area = ?
- where date = ? and area = ? and amount = ?
不命中 / 部分命中
- where area = ?(缺最左 date)
- where date = ? and amount = ?(中间断了 area)
二、建索引原则
- 高频查询字段放最前面
- 等值查询放前面,范围查询放后面
- 联合索引字段不要太多,3 个以内最合适
三、实战示例
-- 建联合索引(高频字段在前) CREATE INDEX idx_date_area ON t_order(date, area); -- 命中索引 SELECT * FROM t_order WHERE date = '2026-03-19' AND area = '华东'; -- 不命中索引 SELECT * FROM t_order WHERE area = '华东';四、避坑
- 不要建无用索引,拖慢写入
- 不要把低基数字段(性别、状态)放前面
- 查询时严格遵循最左匹配
最左前缀是 MySQL 索引最基础的知识点,面试能说清,实战能用对,索引效率直接拉满。
