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

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

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

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

◆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)
;