3.4.5 索引的设计原则
索引设计的优劣直接决定了数据库的读写性能。一套好的索引并非“越多越好”,而是遵循一系列相互制约的原则,在查询加速与写入维护开销之间找到最佳平衡点。以下是索引设计的核心原则,它们相互关联,需要综合考量。
🎯 一、最左前缀原则 —— 联合索引的生命线
这是联合索引设计的第一原则,决定了索引能否被查询高效利用。
- 定义:联合索引
(A, B, C)中,只有查询条件包含索引的最左列A或其连续前缀时,才能使用索引进行快速查找。 - 应用:
- 不要为每个查询列单独建索引,而应设计一个联合索引,使其最左前缀覆盖多种查询模式。
- 例如,系统中有
WHERE A=?和WHERE A=? AND B=?,一个索引(A, B)即可同时满足这两个查询。
- 避免失效:查询条件不能跳过最左列。
WHERE B=?无法利用索引(A, B)。
⚖️ 二、等值优先,范围靠后
在联合索引的列顺序中,应将等值查询列放在前面,范围查询列放在最后。
- 原因:范围条件(
>,<,LIKE 'prefix%'等)会“截断”后续列,使它们无法再用于缩小扫描范围或排序,只能依赖 ICP 过滤。 - 示例:
WHERE s
