MySQL

MySQL 联合索引:为什么建了索引却没走?

很多项目里最容易出现的误区,是“我已经建索引了,所以查询一定快”。实际上,索引是否有效,要看查询条件是否能利用索引结构,以及优化器估算的成本。

联合索引首先看最左列

假设建立索引 (company_id, status, created_at),这类查询通常比较容易利用它:

WHERE company_id = 1
  AND status = 1
  AND created_at >= '2026-08-01'

如果直接跳过 company_id 只查 status,这个联合索引通常不能发挥预期作用。

不要只凭感觉,先看 EXPLAIN

EXPLAIN 能帮助你看到使用了哪个索引、访问类型、预计扫描多少行。项目优化应该先观察执行计划,再决定是否改索引。

返回文章列表开发者工具