在 PostgreSQL 中运行长排序查询

问题描述 投票:0回答:1

我有这个

bundle
表,每个捆绑包可以包含
n
表中的 0 到
items
项目,这是我获取项目中位数的查询

SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY r.count) AS median
FROM (
    SELECT bundle.id, COUNT(*)
    FROM items
    JOIN bundle ON bundle.id=items.bundle_id
    GROUP BY bundle.id
) AS r;

但是这个查询花费的时间太长并且超时,使用 postgreSQL 将此查询分成批次的最佳方法是什么?

postgresql
1个回答
0
投票

我认为分割查询的唯一明智的方法是创建一个具有

select bundle_id,count(*) ct from items
结果的临时表(在第一个查询中添加捆绑表不会给你带来任何好处),然后可能在 ct 上创建一个索引。

如果分批进行,您会测量什么?您将如何得出结果?例如,如果您有两个组: 1,2,8,9,10 和 1,2,2,2,3 那么第一组的中位数是8,第二组的中位数是2。整个组的中位数是2。

© www.soinside.com 2019 - 2024. All rights reserved.