postgresql - Postgres "first"聚合函数

标签 postgresql aggregate-functions

我正在使用文件 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/

相关文章:

python - 即使没有任何更改,Alembic 也会继续创建空的迁移文件

sql - PostgreSQL 驱动程序在某些 SQL 语句上附加隐藏字符

SQLite - 帮助优化具有多个条件的先前行的总计

mysql - SQL - 查找 0 和人口平均值之间的人口百分比

mysql - 尝试使用 SQL 查询获取每天的项目数

mysql - SQL 仅选择列上具有最大值的行

sql - 计算总数和部分

sql - 需要在 postgreSQL 中获取最小值的行

ruby-on-rails - 在 CentOS 6 上安装 pg gem

sql - 只保留审计表中每个对象的最后 5 行