1

我在 postgresql 中做这样的事情:

select A.first, 
       count(B.second) as count, 
       array_agg(A.second) as second,
       array_agg(A.third) as third, 
       array_agg(B.kids) as kids 
from A join B on A.first=B.second 
group by A.first;

而且它需要永远(也因为桌子很大)。将输出限制为 10 行并用解释分析查看告诉我有一个嵌套循环,它很大并且需要大部分时间。

有什么方法可以编写这个查询(然后我将在 CREATE TABLE AS 中使用它来创建一个新表)来加速它,同时保留相同的输出,这就是我想要的?

谢谢!

4

1 回答 1

1

确保用作外键的列被索引:

create index b_second on b(second);

如果没有这样的索引,每一行a都会导致对 的表扫描b,这会使您的查询爬网。

于 2013-01-21T14:00:52.153 回答