サイトアイコン SE日記

【SQL】IN句をEXISTS句に置き換えするチューニング方法


ORACLE SQLのSELECT文が遅いとき、IN句の置き換え・書き換えによってチューニングできる場合があります。

下記のようなSELECT文が遅い場合は、IN句をEXISTSに置き換えてみましょう。

UNION ALLの方が高速に結果を返してくれる場合は、EXISTSを使うことをオススメします。

SQLのサンプル

◆SELECT文の例

select
*
from
table1 a
where
a.div_cd in (select b.div_cd from table2 b where b.div_name = ‘IT’)
;

◆置き換えの例

select
*
from
table1 a
where
exists (select
‘x’
from
table2 b
where
b.div_name = ‘IT’
and a.div_cd = b.div_cd)
;

最後に

最後までお読みいただきありがとうございます。

SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。

モバイルバージョンを終了