ページの先頭行へ戻る
Symfoware Server V11.0.x SQLリファレンス
Symfoware

2.15 ASSIST指定

機能

SQL文を実行する際のアクセスプランを固定化する時に指定します。

参照

アクセスプランについては、“アプリケーション開発ガイド(共通編)”を参照してください。

記述形式

構文要素の構成

参照項番

一般規則

ASSIST
  • ASSIST要素に構文誤りがあった場合、構文誤りが存在するASSIST要素は無効となり、正しく指定されたASSIST要素のみが有効となります。

  • ASSIST要素はASSIST指定を指定した問合せのみに適用されます。たとえば、ある問合せが副問合せを持つ場合、ある問合せに指定したASSIST指定は副問合せには適用されません。

  • SQL文に以下のシステム表を指定した場合、ASSIST指定を指定することはできません。

    • RDBII_ASSISTTABLE

    • RDBII_DSI_STATUS

    • RDBII_CON_PRM

    • RDBII_CON_PRM_DIV

    • RDBII_SYS_PRM

    • RDBII_SYS_PRM_DIV

    • RDBII_CON_INF

USE_INDEX
  • ASSIST表要素に指定された表に対して、インデックス名またはインデックスDSO名で指定したインデックスを使用します。

  • 同一のASSIST表要素に対して、複数のUSE_INDEXを指定することはできません。

  • 探索条件にROW_IDを指定した場合、USE_INDEXは指定できません。

参照

USE_INDEXの使用方法については、“アプリケーション開発ガイド(共通編)”の“制約ASSISTの使用方法”を参照してください。

LEADING_TABLE
  • ASSIST表要素に指定された表の順にジョインします。結合表中の表も指定できます。

  • 同じASSIST表要素を複数指定することはできません。

  • LEADING_TABLEは1つのASSIST指定に1回だけ指定することができます。

  • FROM句に指定した表、または導出表が1個の場合、LEADING_TABLEは指定できません。

参照

LEADING_TABLEの使用方法については、“アプリケーション開発ガイド(共通編)”の“ジョインASSISTの使用方法”を参照してください。

JOIN_RULE
  • ジョインする方法を指定します。

    FETCH

    フェッチジョインのアクセスモデルを優先します。

    MERGE

    マージジョインのアクセスモデルを優先します。

    参照

    アクセスモデルについては、“アプリケーション開発ガイド(共通編)”を参照してください。

  • JOIN_RULEは、1つのASSIST指定に1回だけ指定することができます。

  • FROM句に指定した表、または導出表が1個の場合、JOIN_RULEは指定できません。

参照

JOIN_RULEの使用方法については、“アプリケーション開発ガイド(共通編)”の“ジョインASSISTの使用方法”を参照してください。

FIRST_ROWS
  • 最初の1件の検索について最短の応答時間を目標にアクセスプランを選択します。

  • FIRST_ROWSは、以下のいずれかに指定することができます。

    • 最も外側の問合せ指定

    • ORDER BY句を指定した導出表

参照

FIRST_ROWSの使用方法については、“アプリケーション開発ガイド(共通編)”の“実行制御ASSISTの使用方法”を参照してください。

表名
  • ASSIST指定を適用する表の名前を指定します。

  • 表名は、ASSIST指定と同一の問合せ指定のFROM句に指定した表名を指定します。

  • スキーマ名による修飾を除いた表名でFROM句の表名を一意に識別可能な場合、スキーマ名は省略することができます。

  • ビュー表名は指定できません。

相関名
  • ASSIST指定を適用する表の相関名を指定します。

  • 相関名は、ASSIST指定と同一の問合せ指定のFROM句に指定した相関名を指定します。

  • FROM句に指定した表名に相関名を指定している場合、ASSIST表要素には相関名を指定しなければなりません。

  • ビュー表の相関名は指定できません。

インデックス
  • ASSIST指定を適用するインデックスが、一時表に定義したインデックスまたは格納構造定義を行わないインデックスの場合、インデックス名を指定します。

インデックスDSO名
  • ASSIST指定を適用するインデックスが、一時表に定義したインデックスまたは格納構造定義を行わないインデックス以外の場合、インデックスDSO名を指定します。

  • データ構造がXMLのインデックスDSO名は指定できません。

使用例

ASSIST指定の使用例を以下に示します。“在庫管理.在庫表”および“在庫管理.発注表”という表を用いています。

在庫管理.在庫表

表の格納構造:SEQUENTIAL

インデックスのDSO名

構成列名

INDEX1

製品番号

INDEX2

倉庫番号

在庫管理.発注表

表の格納構造:SEQUENTIAL

インデックスのDSO名

構成列名

INDEX3

取引先

INDEX4

仕入価格

INDEX5

取引製品

例1

USE_INDEXの例を以下に示します。

インデックスDSOのINDEX4を使用して検索します。

SELECT /* ASSIST USE_INDEX(発注表(INDEX4)) */
     取引製品,仕入価格
  FROM 在庫管理.発注表
  WHERE 取引先 = 61
   AND 仕入価格 BETWEEN 8000 AND 9000
例2

LEADING_TABLEの使用誤りの例を以下に示します。

発注表、在庫表の順にジョインを行います。

SELECT /* ASSIST LEADING_TABLE(発注表,在庫表) */
     HA.仕入価格,HA.取引製品
  FROM 在庫管理.在庫表 ZAI,在庫管理.発注表 HA
  WHERE ZAI.製品番号 = HA.取引製品
   AND ZAI.倉庫番号 = 2
   AND HA.取引先 > 70

LEADING_TABLEのASSIST表要素に表名が指定されているため、エラーになります。相関名を使用している場合は、相関名を指定してください。