[pgsql-jp: 35086] Re: select のパフォーマンスについて

tamaki. tt @ plum.plala.or.jp
2005年 3月 23日 (水) 00:20:17 JST


玉置ともうします。

7.4の変更点に「IN/NOT INを使った副問い合わせの高速化」とあります。
マスダさんが手動でSQL書き換えたような事を 実行時に自動でやってくれるように
なったようです。(つまり、バージョンアップで劇的に早くなるはずです)

http://www.postgresql.jp/PostgreSQL/release.html

以上


T.Masuda wrote:

>マスダです。
>
>いろいろと情報有難うございました。
>
>PostgreSQL は最近はじめたばかりなので、
>explainやexplain analyze など、ご提示できなくて申し訳ありません。
>
>  
>
>>多分お望みのケースは、以下のようなIN副問い合わせをJOINに展開する方法です。
>>
>>select T2.id, count(*) as cnt
>>from table2 T2 INNER JOIN T1 on (T1.id=T2.id)
>>where xxx... group by T2.id;
>>    
>>
>
>ご提示頂いた方法が、最も早いようです。
>有難うございます。
>
>...が、今回は集計する行数が100万以上と多いため、
>どちらでも実用的な速度が出ず、
>また 7.4 にバージョンアップしても劇的には早くならないと思いますので
>設計から見直す必要がありそうです。
>
>
>----- Original Message ----- 
>From: "Yutaka tanida" <tanida @ sra.co.jp>
>To: <pgsql-jp @ ml.postgresql.jp>
>Sent: Saturday, March 19, 2005 4:30 PM
>Subject: [pgsql-jp: 35076] Re: select のパフォーマンスについて
>
>
>  
>
>>谷田です。
>>
>>あと、個別SQLの挙動に関する話についても、explainやexplain analyzeの結果
>>を送って頂かないことには何とも言えないことが多いです。そもそもRDBMSは実
>>装によってこのへんの話は違うことが多いので、実際にどう動いているのか確か
>>めないことには、他のDBの常識が通用しないことが多いです。
>>
>>On Sat, 19 Mar 2005 15:37:00 +0900
>>"T.Masuda" <tmasuda @ msg.biglobe.ne.jp> wrote:
>>
>>    
>>
>>>確かに、in (...) に記述された id をインデックスを使って
>>>ごっそり取って来れそうな次のSQLが遅く、
>>>
>>>select T2.id, count(*) as cnt
>>>from table2 T2
>>>where T2.id in (select T1.id from table1 T1 where xxx...)
>>>group by T2.id;
>>>      
>>>
>>これは、T2の各行に対して副問い合わせを評価するため、典型的な遅いSQLの一
>>例です。
>>
>>    
>>
>>>逆に、table1 一行につき、table2 に毎回 select を投げるので遅くなりそうな
>>>次のSQLが早いのです。
>>>
>>>select T1.id, (select count(*) from table2 T2 where T1.id=T2.id) as cnt
>>>from table1 T1
>>>where xxx...;
>>>      
>>>
>>多分お望みのケースは、以下のようなIN副問い合わせをJOINに展開する方法です。
>>
>>select T2.id, count(*) as cnt
>>from table2 T2 INNER JOIN T1 on (T1.id=T2.id)
>>where xxx... group by T2.id;
>>
>>
>>    
>>
>>>ほぼあきらめですが、もし、解決策をご存知の方がいらっしゃいましたら
>>>ご教授お願い致します。
>>>      
>>>
>>さっきの件と含めて、7.4の典型的なパフォーマンス改善項目ですから、バージョ
>>ンアップするのが一番早いのではないでしょうか?
>>
>>-- 
>>Yutaka tanida <tanida @ sra.co.jp>
>>
>>
>>    
>>
>
>  
>




pgsql-jp メーリングリストの案内