新婚システムエンジニアのブログ

新婚システムエンジニア(SE)のブログです。IT系の話や資格関連、結婚生活について書きます

【Oracle】SQLのヒント句についてとよく使うヒント句ついて

SQLのパフォーマンスチューニング系の話になります。
SQLの中で結合やらなんやらして複雑なSQLになり処理が遅いSQLになってしまうことがあります。
そのような際は実行計画を確認して、遅い原因を調べたりします。
INDEXを作って速度を改善させる事が多いですが、今日はヒント句について調べたのでそのことについて書こうと思います。

ヒント句はSQL文中にコメントとして記述して実行計画を明示的に指示することができます。
書き方は次のような感じ。

SELECT /*+ヒント句 */

・SELECT、UPDATE、INSERT、MERGEまたはDELETEに続けてコメントを指定する
・ヒント句を複数書く時は空白で区切る。

よく使うヒント句について以下にまとめてみた。

ヒント句 説明 書き方
INDEX インデックスを利用する INDEX(テーブル名 テーブルのインデックス名)
USE_MERGE マージ結合を使用して結合 USE_MERGE(テーブル名1 テーブル名2)
USE_HASH ハッシュ結合を使用して結合 USE_HASH(テーブル名1 テーブル名2)
FULL 指定した表に対して全表スキャンを実行 FULL(テーブル名)
ORDERED FROM句に書かれた順番でテーブルを結合 ORDERED
LEADING テーブルの結合順序を指定した順番に結合 LEADING(テーブル名1,テーブル名2,テーブル名3)