[pgsql-jp: 37061] Re: SELECT の性能

河本陽一 komoto.yoichi @ kcc.co.jp
2006年 5月 17日 (水) 11:23:24 JST


こうもとです。

psql_aby さんの書いたこと:
> joinをやめてサブクエリーを利用したものはどうでしょうか?
> 
> SELECT t1.*,
>        (select f2 from t2 
>          WHERE f1 = t1.f1 
>            AND f2='xxx') f2
>   FROM t1
>  WHERE f3=0 
>    AND t1.f4=false 
>    AND f5 IS NOT NULL 
>  ORDER BY f6 DESC LIMIT 300;

 この方法を試してみましたが、f2='xxx'の条件にあっていないレコードは
その部分がNULLとなるだけで、ほしい結果とは違いました。


 サブクエリーを利用ということで、以下のようにやってみましたが、プラ
ンは最初のものと変わりませんでした。

SELECT * FROM t1, (select * from t2 where f2='xxx') as t2a WHERE t1.f1=t2a.f1 and f3=0 AND t1.f4=false AND f5 IS NOT NULL ORDER BY f6 DESC LIMIT 300;


 なんか、最初に根岸さんの出された案のように、シーケンシャルスキャン
をさせない方法が一番よいのではないかと思ってきました。

======================================================================
河本陽一(こうもとよういち)
mailto:komoto.yoichi @ kcc.co.jp




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