アクセス・プランの妥当性検査

アクセス・プランは、各照会要求を満足させるために必要な動作を記述する制御構造です。 これには、データに関する情報とその抽出方法が含まれます。 どの照会についても、最適化を行うたびに、Query 最適化プログラムは要求されたデータへのアクセス方式に関する最適化プランを作成します。

パフォーマンス向上のため、いったんアクセス・プランが作成されたら、 将来照会が実行される場合にそのアクセス・プランを使用できるよう、保管されます (以下の例外を参照)。 しかし、最適化プログラムには動的再計画機能があります。 これは、以前に作成 (および保管) されたプランが検出されても、より良いプランが可能な場合には、最適化プログラムがプランを再作成する場合があることを意味します。 この処理によって、保管されたプランを利用しつつ、最大限の柔軟性を発揮することができます。

  • 動的 SQL の場合、アクセス・プランは準備の際、またはオープン時に作成されます。 しかし最適化では、最適なプランの決定にホスト変数値が使用されます。 そのため、準備時に作成されたプランは、照会の初回オープン時に再作成される場合があります (ホスト変数値が存在する場合)。
  • 組み込み静的 SQL を含む IBM® i プログラムの場合、アクセス・プランはコンパイル時にまず作成されます。ここでも、最適化では最適なプランの決定にホスト変数値が使用されるため、コンパイル時のプランは照会の初回オープン時に再作成される場合があります。
  • 照会ファイルのオープン (OPNQRYF) の場合、アクセス・プランは作成されますが、保管されません。 OPNQRYF コマンドを実行するたびに、 新規のアクセス・プランが作成されます。
  • Query/400 の場合、アクセス・プランが照会定義オブジェクトの一部として保管されます。

プランが保管される上記のすべての場合に (静的 SQL を含む)、 照会は時間とともに実行されるので引き続き動的再計画を適用することができます。

このアクセス・プランは、照会がオープンされたときに妥当性検査されます。 妥当性検査には、以下の事柄が含まれます。

  • アクセス・プランと同じテーブルが照会で参照されていることを検証します。例えば、テーブルが削除されて再作成されなかったこと、 または *LIBL を使用して解決されたテーブルが変更されていないことを検証します。
  • 照会を実施するのに使用される索引がまだ存在していることを検証します。
  • テーブル・サイズ選択または述部選択に大きな変化がないことを確かめます。
  • QAQQINI オプションが変更されていないことを検証します。