framework
framework/mysql/index/index.md
medium
framework-mysql-index-index
InnoDB 索引设计 5 个独立决策点 — 聚簇主键选型 / 联合索引最左前缀 / 覆盖索引免回表 / 索引失效场景 / 区分度与前缀索引。Use when 建索引 / 排查没走索引或慢查询 / 评审索引列顺序时。
子项索引
| 子项 | 一句话 |
|---|---|
| mysql-clustered-pk-design skill | InnoDB 聚簇索引与主键选型 — 主键即数据物理顺序,宜用自增 BIGINT,忌用 UUID/随机串/业务字段做 PK(页分裂 + 二级索引膨胀) |
| mysql-leftmost-prefix skill | 联合索引最左前缀法则 + 索引下推 ICP — 索引 (a,b,c) 只能从 a 起连续命中,跳列或范围后断列即失效 |
| mysql-covering-index skill | 覆盖索引避免回表 — 查询所需列全在二级索引中时,直接从索引取数不回聚簇索引,EXPLAIN Extra 显示 Using index |
| mysql-index-fail-cases skill | 索引失效场景全集 — 函数/运算包裹索引列、隐式类型转换、前导 % 的 LIKE、!= 与 NOT IN、OR 一侧无索引,都会退化为全表扫 |
| mysql-cardinality-and-prefix skill | 索引区分度与前缀索引 — 低区分度列(状态/性别/软删标记)单独建索引收益低,长字符串列用前缀索引控制索引体积 |
MySQL · 索引设计索引
InnoDB 索引拆成 5 个独立决策点,按你正在做的事下钻:
| 你在做什么 | 进哪个 |
|---|---|
| 定主键类型(自增 / UUID / 业务键) | clustered-pk-design |
| 排联合索引列顺序、排查没命中联合索引 | leftmost-prefix |
| 想免回表、把查询列收进索引 | covering-index |
| 查询走了全表扫、怀疑索引失效 | index-fail-cases |
| 纠结某列该不该建索引、字符串太长 | cardinality-and-prefix |