16bit!

エンジニアじゃなくなっちゃった人が何かを書くブログ

【Oracle】【SQL】テーブルのエイリアスを指定している場合にはヒントにもその情報を書かないとヒントが効かない

備忘メモを兼ねて。

■基本
oracleで実行するSQLに、使用するインデックスを指定するためのヒント句を足す際の書き方は、
"select"の直後に"/*+ INDEX(TABLE名 INDEX名) */"を入れるだけ*1

SELECT /*+ INDEX(SAMPLE_TABLE SAMPLE_TABLE_IDX01) */
* 
FROM SAMPLE_TABLE
WHERE 
  KEY = 1

エイリアス
テーブルにエイリアス名を付けている場合は、
テーブル名ではなく"/*+ INDEX(エイリアス名 INDEX名) */"とする必要がある。

SELECT /*+ INDEX(sam SAMPLE_TABLE_IDX01) */
* 
FROM SAMPLE_TABLE sam
WHERE 
  KEY = 1

職場で「ヒント句が効かない」と困っている人がいたので、念のため記事にしておきます。

終わり。

*1:別にUPDATEでも使える