我正在使用文件 ID 字段聚合一个表。每个文件都有一个与一个(他的)文件 ID 完全匹配的名称。
select file_key, min(fullfilepath)
from table
group by file_key
因为我知道表的结构,所以我知道我需要任何完整的文件路径。最小值和最大值都可以,但是需要很多时间。
我遇到了 this返回第一个值的聚合函数。不幸的是,这个函数需要很长时间,因为它会扫描整个表。例如,这是非常慢的:
select first(file_id) from table;
最快的方法是什么?有无聚合功能。
最佳答案
无法使使用 GROUP BY
子句的第一个查询更快,因为它必须扫描整个表以找到所有组。
您的第二个查询可以更快:
SELECT (
SELECT file_id FROM "table"
WHERE file_id IS NOT NULL
LIMIT 1
);
没有办法在您编写查询时对其进行优化,因为聚合函数是 PostgreSQL 的黑匣子。
关于postgresql - Postgres "first"聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226744/