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 行に制限し、explain analyze で調べると、ネストされたループが巨大で、ほとんどの時間がかかることがわかりました。

同じ出力を維持しながら、このクエリを作成して高速化する方法はありますか (これを CREATE TABLE AS で使用して新しいテーブルを作成します)。

ありがとう!

4

1 に答える 1

1

外部キーとして使用される列bringが索引付けされていることを確認します:

create index b_second on b(second);

このようなインデックスがないと、 のすべての行でaのテーブル スキャンが発生しb、クエリがクロールされます。

于 2013-01-21T14:00:52.153 に答える