Symfoware Serverにおいて、インデックスを定義しているにも関わらず、アクセスプランが "TABLE ALL SCAN" となり、インデックスが利用されない事象について

インデックスを定義しているにも関わらず、アクセスプランが "TABLE ALL SCAN" となり、インデックスが利用されず、データベースのアクセスに時間がかかっています。 原因と対処方法を教えてください。
[原因]
インデックスが利用されなかった原因には、以下の条件が考えられます。
・rdbupsコマンド、またはSET STATISTICS文で最適化情報が設定されていない。
・WHERE探索条件に指定されている列が、インデックスに定義されていない。
・WHERE探索条件に指定されている列は、マルチカラム構成のインデックスとして定義されているが、マルチカラムの第1構成列(先頭)が探索条件に指定されていない。
・比較述語に"<>"または"!="が指定されている。
・NOT BETWEEN、NOT LIKE、NOT NULL、NOT IN、EXISTS述語のいずれかが指定されている。

[対処方法]
実行したSQL文が上記[原因]に記載した条件に合致していないか確認し、合致している場合は、最適化情報の設定やインデックス定義の見直し、SQL文の見直しなどの対処を行ってください。
なお、Symfoware Server 9.2.0より、SQL文にASSIST指定を記述することで、アクセスプランを固定化することができます。ASSIST指定は、利用するインデックスの選択、ジョイン順、およびジョイン方法(フェッチ/マージ)を指定することで、データベースのアクセスを最適化することが可能となります。

詳細は以下のマニュアルを参照してください。
  Symfoware Server V12.2.0 アプリケーション開発ガイド(共通編)
    第3章  アプリケーションの性能 全般
  Symfoware Server V12.2.0 SQLTOOLユーザーズガイド
    第4章  データベースをチューニングする  全般
  Symfoware Server V12.2.0 チューニングガイド
    第4章  チューニング  全般
なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス区分 Symfoware
製品・サービス情報
アンサー種別 設計/開発
このページの先頭へ