Hasty Briefsbeta

双语

Postgres SELECT DISTINCT Does Not Scale

2 days ago
  • Postgres中的SELECT DISTINCT总是扫描所有匹配谓词的行,而不仅仅是唯一值。
  • 这导致性能随总行数扩展,而非不同值的数量,从而对'窄深'工作负载造成查询缓慢。
  • Postgres缺少一个能有效跳过重复值的松散索引扫描操作符,这与MySQL不同。
  • 使用递归CTE和顺序min()查询的变通方法实现了O(唯一值数量)的性能。