- ① 选择性高(区分度大)的列优先
- ② 联合索引按「等值 → 范围 → 排序」排布
- ③ 尽量覆盖高频查询(避免回表)
- ④ 控制单表索引数量(写代价)
- ⑤ 冗余索引定期清理((a) 与 (a,b) 不同,但 (a,b) 与 (a,b,c) 常可合并审视)
索引现状盘点
索引现状盘点
SELECT INDEX_NAME, GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) AS cols,
MAX(CARDINALITY) AS card, MAX(NON_UNIQUE) AS non_unique
FROM information_schema.statistics
WHERE TABLE_SCHEMA='appdb' AND TABLE_NAME='orders'
GROUP BY INDEX_NAME;索引不是越多越好:每个索引都是写入成本与磁盘成本,按查询矩阵而非直觉设计。