こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【チューニング】インデックスとヒント句の違い

いつもお世話になっています。

oracle9iR2を使用しています。
速度アップのためチューニングが必要なsqlが指摘されたのですが、
あるカラムにインデックスを作成すべきとの指摘がありました。
インデックスを作成するだけである程度改善される場合もあるのでしょうか?
それともインデックス作成後、対象のsql/に、*+INDEX・・・ などのようにSQLにヒント句を記載してこそ効果を発揮するものなのでしょうか?

質問がまとはずれでしたら申し訳ありません。
どなたかご教授お願いします。

投稿日時 - 2005-06-16 11:49:24

QNo.1452732

困ってます

質問者が選んだベストアンサー

インデックスは作成すると使うという選択肢に入るようになりますが、必ず使われるというわけではありません。Analyzeの結果、インデックスを使うよりも全表走査を行った方がいいとOracleが判断した場合、インデックスは使われずに全表走査が行われることもあります。

ここで、どうしても特定のインデックスを使用させたかったり、結合方法や結合順序を決め打ちしたかったりする場合にヒントを使用します。

基本的にはOracleがあるアルゴリズムで最も高速に検索できる実行計画を立てるものですが、場合によっては思うような実行計画を立ててくれない場合があります。そういった場合にOracleにこの方法で検索した方が早いですよと教えてあげるのがヒントです。ただし、不適切なヒントを設定した場合、返って遅くなる場合も当然ながらあります。

従って、ヒントを設定するにはそれなりのパフォーマンスチューニングに関する知識が必要となるでしょう。

投稿日時 - 2005-06-17 10:04:27

お礼

詳細で分かりやすい説明ありがとうございます。
とってもよく分かりました

投稿日時 - 2005-06-19 20:13:28

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

INDEXを作成するだけで、次回のSELECTの発行から自動的に使用されます。
もし、元々他に設定していた別のINDEXが使用されてしまうようであれば、ヒント句で使用したいINDEXを指定してあげるといいです。

Oracleの作成する実行計画を見ることで、どのINDEXが使用されるのか確認できます。

PLAN TABLEとか、auto trace などのキーワードで調べてみると色々出てくると思います。

投稿日時 - 2005-06-16 13:01:53

お礼

なるほど。ありがとうございます。

投稿日時 - 2005-06-19 20:12:19

あなたにオススメの質問