
Oracle SQLチューニング(第35回)「任意のデータを活用した効率的なSQLの作成」(1/2回)
今回から二回に渡り、「任意のデータを活用した効率的なSQLの作成」に関して、お送りします。では、早速はじめましょう。
今回はインデックス先頭カラムが範囲条件で使われて発生する性能問題を改善するために、範囲条件を結合に変更する方法に対して調べてみることにしよう。
9.1 CONNECT BY LEVELでデータを抽出する。
任意のデータを生成するために10g以前のバージョンにはビューやテーブルを利用して値を持って来ました。 このような方法は追加的なI/Oが発生したが、Oracle 10gからはDUALテーブルとConnect By Levelを使って、追加的なI/Oなしに任意のデータを生成することができるようになりました。
次のConnect By Levelを活用した任意の数字あるいは日を抽出する方法に対して調べてみることにしよう。
9.1.1 任意の数値作り
1から10までを抽出するSQLはConnect By Levelを利用すれば下記のように簡単に作成することができます。
9.1.2 任意の日作り
Connect By Levelがなければ、日付が格納された別のテーブルを作成して照会したり、辞書ビューなどを使って照会するしかないので、追加のI / Oが発生したはずです。 ただし、以下のようにConnect By Levelを使用すると、追加のI / Oなしで任意の日付を抽出できます。
いかがでしたか?それでは、See You^^