罗宾斯·塔拉坎:你在v18之前就已经拥有的“跳过扫描”

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

PostgreSQL 18引入了多列B树索引的跳过扫描功能,显著增强了优化器。在低基数情况下,跳过扫描能显著提升查询速度,而在高基数情况下,全索引扫描仍然更优。

🎯

关键要点

  • PostgreSQL 18引入了多列B树索引的跳过扫描功能,显著增强了优化器。
  • 在低基数情况下,跳过扫描能显著提升查询速度。
  • 在高基数情况下,全索引扫描仍然更优。
  • 预v18版本在未过滤的情况下,优化器能够有效利用索引。
  • 在低基数场景下,v18的跳过扫描显著提高了查询性能。
  • 在高基数场景下,v18的跳过扫描未能提升性能,反而表现不佳。
  • 跳过扫描的识别方法是查看EXPLAIN输出中的Index Searches行。
  • 在旧版本PostgreSQL中也能有效利用多列索引,但缺乏v18的跳过扫描逻辑。
  • 生产中应保持统计信息更新,并考虑使用部分或表达式索引以提高查询性能。
  • PostgreSQL v18的跳过扫描功能对低基数列非常有用,但高基数列仍需使用全索引扫描。
➡️

继续阅读