catch-img

Oracle SQLチューニング(第13回)「スカラーサブクエリの理解と効率的なSQLの作成」(3/5)

今回は、スカラーサブクエリでデータが抽出されないことについてです。

3.1.1.3 データが抽出されなくてもよい

スカラ副問い合わせはNULLデータを抽出してもSQLの実行に影響を与えない。もし、スカラ副問い合わせでNULLデータを任意の値に置換したい場合は、以下のSQLのようにNVL関数を使用すればよい。

SELECT c1,
       c2,
       c3,
       NVL((SELECT NULL
              FROM SCALAR_T2 T2
             WHERE t2.c2 = t1.c2
               AND ROWNUM <= 1 ---> 1件だけ抽出するように条件追加
            ),'ISNULL') AS t2_c1 ---> NULL抽出
 FROM SCALAR_T1 T1 
WHERE c2 = 'A'
  AND ROWNUM <= 1 ;

     C1 C2         C3 T2_C1
------- -- ---------- ------
     26 A      100025 ISNULL

これまで調べてみたサブクエリの特性を総合的にみれば、スカラーサブクエリは最大結果件数回反復実行して、抽出件数は常に1件以下であり、NULLデータを抽出する場合にも実行が可能だということが分かる。


「常に1件以下のデータの抽出」と「NULLデータの抽出が可能」という2つの特徴は、スカラーサブクエリは、SQLの抽出件数に影響を与えないことを意味する。そこで、この2つの特徴のために、スカラーサブクエリを結合に変更する場合、必ず結合接続カラムが重複した値を持たないようにしなければならず、結合はOuter Joinを行わなければならない。


今回はここまでです。次回は、スカラーサブクエリと結合についてです。ご期待ください。では、また。See You ^^

​​​​​​​


CONTACT

他社に頼らず自社でデータベースを監視・運用をしませんか?
MaxGaugeがサポートします

お役立ち資料は
こちらから

不明点がある方は、
こちらからお問い合わせください

お電話でのお問い合わせはこちら

平日 10時~18時

人気記事ランキング

タグ一覧