【ORACLE】SQLのヒントとは


ここではORACLEデータベースにおけるSQLのヒントを紹介します。

ヒントの書き方や主なヒントについては↓で紹介していますのでぜひ参考にしてください。
>>【ORACLE】SQLヒントの書き方:サンプル多数あり

SQLのヒントとは

ヒントは、SQLに記述し、SQLが指定したアクセスパスや実行計画でデータの取得や結合を行うためのものです。

通常、SQLを実行したとき、ORACLEデータベースでは、オプティマイザが表や索引の統計情報を基に、最適な実行計画を作成します。そのためSQLを実行する人は、実行計画やアクセスパスを意識する必要がありません。

ただし、SQLが複雑な状態であるときや統計情報が最新化されていないなど様々な要因により、オプティマイザが最適な実行計画を作成できないこともあります。
>>【SQL】オプティマイザと実行計画について
>>【OracleSQL】「統計情報が古い」とはどういうことか

ヒントを使うことで、最適でない実行計画を、最適な実行計画にすることが出来ます。

ヒントを記述することである程度、統計情報が変更されても、同じ実行計画でSQLを実行することが出来ます。

ヒントはSQLのSELECT句やWHERE句を変更する必要はないため、ヒントの有無によって実行結果は変わりません。アプリケーションの実行結果が変わらず、SQLのパフォーマンスだけを変化させることが出来ます。

ヒントの書き方

ヒントは、SELECT句の後ろに「/*+ ここにヒント*/」と書きます。

SELECT /*+ヒント */ 列名 FROM テーブル名;

次のSQLでは、IX_table1_001インデックスを使うように指定しています。

select /*+INDEX(a IX_table1_001)*/ * from table1 a where a.col1 = :cond;

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

まとめ

ヒントは、SQLに記述し、SQLが指定したアクセスパスや実行計画でデータの取得や結合を行うためのものです。

ヒントはSELECT句の後ろに「/*+ ここにヒント*/」と書きます。

ヒントを使ったSQLのチューニングについては↓で詳しく解説していますのでぜひ参考にしてください。
>>【SQL】SELECT文のチューニング方法まとめ