SQLを実行すると、たまにインデックスを使ったほうが高速であるにもかかわらず全表スキャンが選択され、パフォーマンスが振るわないということがあります。 こういった現象の一因には、オプティマイザがキャッシュ効率を考慮せずに常にI/Oが発生するものとしてコスト計算を行っているということがあるようです。 (インデックスはバッファ・キャッシュに存在する可能性が高いため、実際には見積もりコストよりも高速にアクセスできるケースが多い) このような現象が頻発する場合、OPTIMIZER_INDEX_CACHING、OPTIMIZER_INDEX_COST_ADJ という初期化パラメータの設定を調整すると、インデックス・スキャンのコストを低く計算させ、全表スキャンよりもインデックス・スキャンが選択される可能性を高めることができるようです。 OPTIMIZER_INDEX_CACHING インデックス・ブロッ
![『[Oracle] インデックスに関するコスト計算の調整によるオプティマイザの動作の制御』](https://cdn-ak-scissors.b.st-hatena.com/image/square/ed239427f781d723ae5cf65616a522073f68d378/height=288;version=1;width=512/https%3A%2F%2Fstat.profile.ameba.jp%2Fprofile_images%2F31%2Farchive-redo-blog%2F1180840362506.jpg)