indexes
索引与访问路径
理解 B-Tree/Hash/位图/倒排等索引形态与访问路径选择,匹配常见谓词。
要点
- 访问方法:点查、前缀范围、覆盖索引、回表;
- 选择性与顺序:多列索引的列顺序、最左前缀;
- 写入成本与维护:插入/更新的索引代价;
- 引擎差异:Postgres GIN/GIST、MySQL 前缀索引、部分引擎不支持函数索引。
设计范式与反模式
- 组合索引列顺序:选择性高在前,匹配查询谓词顺序;
- 反模式:低选择性列(如布尔)单列索引、过多近似重复索引、更新极其频繁的列建索引;
- 覆盖索引:将查询列包含在二级索引,减少回表。
表达式索引与兼容写法
- 支持函数索引的引擎(如 Postgres):
CREATE INDEX ON users (lower(email));
; - 不支持时改写谓词避免函数包裹列,或存储标准化列(冗余)加索引。