跳到主要内容

indexes

索引与访问路径

理解 B-Tree/Hash/位图/倒排等索引形态与访问路径选择,匹配常见谓词。

要点

  • 访问方法:点查、前缀范围、覆盖索引、回表;
  • 选择性与顺序:多列索引的列顺序、最左前缀;
  • 写入成本与维护:插入/更新的索引代价;
  • 引擎差异:Postgres GIN/GIST、MySQL 前缀索引、部分引擎不支持函数索引。

设计范式与反模式

  • 组合索引列顺序:选择性高在前,匹配查询谓词顺序;
  • 反模式:低选择性列(如布尔)单列索引、过多近似重复索引、更新极其频繁的列建索引;
  • 覆盖索引:将查询列包含在二级索引,减少回表。

表达式索引与兼容写法

  • 支持函数索引的引擎(如 Postgres):CREATE INDEX ON users (lower(email));
  • 不支持时改写谓词避免函数包裹列,或存储标准化列(冗余)加索引。