2008.04.21

ヒント文の使用

OracleデータベースのSQLチューニング時には、
インデックスとヒント文の適用が有効です。

正しいSQL文を書いていても、膨大なデータ件数を扱う場合は、
インデックスを適用すべきケースが多々あります。
しかし、Oracleのコストベースオプティマイザは、
実行時のDB状況により、インデックスを参照しない実行計画を選択するケースもあります。
場合によっては主キーも無視されることもあります。

この時に有効なのがヒント文です。
例えば強制的にインデックスを参照するように記述することが出来ます。
レスポンスがあがらないSQLは、まず実行計画を参照し、
インデックスとヒント文の適用を検討する必要があると思います。

但しヒントの適用は慎重に行うべきです。
強制的にインデックスを使用するよう実行計画を変えてしまう訳なので、
例えば、データ件数が変わってインデックスを使用しない方が、
むしろレスポンスが良いという状況になったとしても
Oracleオプティマイザはその実行計画を選択してくれません。
必ずインデックスを参照します。

その他、ヒント文適用時の注意点
①コメント内に記述する為、間違った書き方をしてもエラーが出ない。
②テーブルに別名を使用している時は、ヒントには別名で記述しなければ動かない。
③INDEXヒントを使用すると、主キーが使われなくなることがあります。
 これに限らず、ヒントを使用する際は、大量データにて
 実際に実行計画を見ながら1つずつ地道に確認し、
 検討していく必要があります。

photo
minami