扫盲 2026.10.11 00:21 25 次浏览 0 条评论

MySQL多字段索引基础

多字段索引就是一条索引里串了好几个字段,比如 a,b,c。字段顺序特别关键,MySQL 是从左往右挨着匹配的,这就是最左前缀原则。

建索引的时候,等值查询、区分度高的字段放前面,范围查询的字段放最后。一旦某个字段用了范围,它右边的字段基本就用不上索引了。

-- 建一个联合索引,顺序是 user_id、status、add_time
ALTER TABLE orders ADD INDEX idx_u_s_t (user_id, status, add_time);

-- 能走上索引:条件带了最左边的 user_id
SELECT * FROM orders WHERE user_id = 10;

-- 也能走:user_id + status 连着用
SELECT * FROM orders WHERE user_id = 10 AND status = 1;

-- 走不了:跳过了最左边的 user_id
SELECT * FROM orders WHERE status = 1;

-- 范围查询后面的 add_time 用不上索引
SELECT * FROM orders WHERE user_id = 10 AND status > 1 AND add_time = '2024-01-01';

一句话,索引字段顺序按实际 SQL 的查询习惯来排,排错了这条索引等于白建,还占地方拖慢写入。

说点什么 0

行思随记

欢迎来到:行思随记