[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 メーリングリストの案内