dポイントプレゼントキャンペーン実施中!

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

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

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

A 回答 (2件)

インデックスは作成すると使うという選択肢に入るようになりますが、必ず使われるというわけではありません。

Analyzeの結果、インデックスを使うよりも全表走査を行った方がいいとOracleが判断した場合、インデックスは使われずに全表走査が行われることもあります。

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

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

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

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

お礼日時:2005/06/19 20:13

INDEXを作成するだけで、次回のSELECTの発行から自動的に使用されます。


もし、元々他に設定していた別のINDEXが使用されてしまうようであれば、ヒント句で使用したいINDEXを指定してあげるといいです。

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

PLAN TABLEとか、auto trace などのキーワードで調べてみると色々出てくると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/19 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!