【ORACLE】SQLに実装すべき3つのSQLヒント


ここではORACLEデータベースのSQLで実装すべきおすすめの3つのヒントを紹介しています。

ヒントについては↓で詳しく解説していますので参考にしてください。
>>【ORACLE】SQLのヒントとは
>>【ORACLE】SQLヒントの書き方:サンプル多数あり

SQLに実装すべき3つのSQLヒント

アプリケーションを担当していると性能問題にぶつかることがあります。

性能問題の半数以上がSQLの処理が遅いことが原因です。そしてSQLのチューニングを行います。

SQLチューニングでよくやるのがSQLの書き換えです。結果が同じでも書き方がいくつもあり、速度が変わってきます。

しかしSQLの書き換えを行うと、プログラムのテストに時間がかかります。

そこで、SQL自体の変更のないヒントを使うことも頻繁にあります。

ここではそんなおすすめのヒントを紹介します。

1.ORDERED

このヒントを追加することでテーブルの結合順序をfromに記述されているテーブルの順番に変更できます。下の例では、a,b,cの順番に結合できます。
【記述例】

select /*+ORDERED*/
*
from
TABLE1 a
,TABLE2 b
,TABLE3 c
where
a.USER_ID = b.USER_ID
and b.USER_ID = c.USER_ID

2.LEADING

このヒントを追加することでテーブルの結合順序をテーブルの別名で指定した順番に結合できます。下の例では、c,b,aの順番に結合できます。
※ORDEREDは順番を指定できませんが、LEADINGは指定できます。
【記述例】

select /*+LEADING(c,b,a)*/
*
from
TABLE1 a
,TABLE2 b
,TABLE3 c
where
a.USER_ID = b.USER_ID
and b.USER_ID = c.USER_ID

3.INDEX

このヒントを追加することで指定したテーブルのインデックスを利用することが出来ます。
【記述例】

select /*+INDEX(a IDX_TABLE1_01)*/
*
from
TABLE1 a
,TABLE2 b
,TABLE3 c
where
a.USER_ID = b.USER_ID
and b.USER_ID = c.USER_ID

(補足)複数のヒントを指定する場合の書き方
複数のヒントを指定する場合は、下のように書きます。
【記述例】

select /*+ORDERED INDEX(a IDX_TABLE1_01)*/
*
from
TABLE1 a
,TABLE2 b
,TABLE3 c
where
a.USER_ID = b.USER_ID
and b.USER_ID = c.USER_ID

まとめ

おすすめのヒントは次の3つです。
 ・ORDERED
 ・LEADING
 ・INDEX

ヒント以外のSQLチューニングの方法について↓で紹介していますので参考にしてください。
>>SELECT文のSQLチューニング方法まとめ