【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’)
;
*
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)
;
*
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チューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。