覆盖索引指某个查询需要的列可以从索引中取得,从而有机会减少访问表数据的工作;它是索引相对于具体查询的性质。
覆盖与访问表数据
只查询索引中的列可能减少额外数据页读取,但不应推出“覆盖后绝不访问表”。例如 PostgreSQL 的 index-only scan 还需要满足索引类型及可见性条件,必要时仍会检查堆中的元组。
设计代价
把所有返回列加入索引会扩大索引、增加更新和缓存成本。应优先服务稳定且重要的访问路径,结合真实返回列及执行计划衡量收益。不同产品对附带列、聚簇组织和可见性判断的实现并不相同。