Postgres SELECT DISTINCT Does Not Scale2 days agoPostgresSELECT DISTINCTperformance optimizationhttps://www.dbos.dev/blog/postgres-select-distinct-does-not-scaleCopy LinkPostgres中的SELECT DISTINCT总是扫描所有匹配谓词的行,而不仅仅是唯一值。这导致性能随总行数扩展,而非不同值的数量,从而对'窄深'工作负载造成查询缓慢。Postgres缺少一个能有效跳过重复值的松散索引扫描操作符,这与MySQL不同。使用递归CTE和顺序min()查询的变通方法实现了O(唯一值数量)的性能。