[pgsql-jp: 34409] Re: パフォーマンスチューニング
Tatsuo Ishii
t-ishii @ sra.co.jp
2004年 12月 7日 (火) 10:09:46 JST
石井です.
> あと、DISTINCT(sort+unique)がものすごくコスト高いですよね。。
そういうことはないと思いますよ.18行の結果を1行にDISTINCTしているだけ
ですから.
以下を見るとたしかにコストが高そうですが,これは単に下位ノード(Hash
Join)のコストが上乗せされているだけです.
> -> Unique (cost=61511.87..63998.42 rows=5771 width=60) (actual time=35383.207..35383.268 rows=1 loops=1)
> -> Sort (cost=61511.87..61760.52 rows=99462 width=60) (actual time=35383.203..35383.205 rows=18 loops=1)
> Sort Key: as.id, as.able_id, as.mem_id, as.feed_id, as.ldata_id, as.ts_fetch, as.ts_filter, as.ts_trigger, al."type"
> -> Hash Join (cost=4516.62..50155.60 rows=99462 width=60) (actual time=6313.877..35382.972 rows=18 loops=1)
> これはたぶん、インデックスを使ってもバキュームしても、どうやっても速くはならないので・・重複した結果が出ないような設計をするとか、DISTINCTせずにも良いようにつくるか、しかないと思います。。
ここをいじってもこのケースに関してはたいして速くならない,に1票.
ただし,重複が非常に多いDISTINCTに関しては,GROUP BYに書き換えると速く
なることもあります.詳細は
http://www2b.biglobe.ne.jp/~caco/fourth_edition/index.html
の「本書を出版後に見つけた性能向上,チューニングテクニックを掲載してい
きます」でどうぞ.
--
Tatsuo Ishii
pgsql-jp メーリングリストの案内