ORACLEのストアドプロシージャであるSQLが流すと、
意図していないindexが利用されて応答が非常に遅くなります。
USER_TABLES表で対象テーブルの統計情報の取得日時を確認しましたが、定期的に収集されていました。
対処療法ではありますが、SQL自体の組み換えや、インデックスの再構築を試すと早くなるのですが、またしばらくすると遅くなります。
ヒント句を与える手も検討していますが、パラメータの値次第で使うべきインデックスも違ってくるので簡単にはいきません。
簡単に書くと以下のような状態です。
SELECT ~ FROM 注文テーブル WHERE 注文日 BETWEEN :注文日F AND :注文日T AND 納品日 BETWEEN :出荷日F AND :出荷日T AND 納品日 BETWEEN :出荷日F AND :納品日T
注文日、出荷日、納品日にはそれぞれインデックスが貼ってあり、
注文日が指定されれば注文日、出荷日が指定されれば出荷日のインデックスを
それぞれ使うようにしたいのです。
<環境>
Oracle11g
チューニングに関する相談なら、「簡単に書く」のではなく忠実に記述して下さい。
回答1件
あなたの回答
tips
プレビュー