ページの先頭行へ戻る
Symfoware Server V10.0.0 SQLTOOLユーザーズガイド

4.2.4 アクセスプランの出力形式

アクセスプランは、以下の形式で出力します。

データベースの検索処理は、データベース資源からデータを読み出し、条件の判定やデータの加工を施し、中間結果としてソートテーブルやワークテーブルにデータを出力するという一連の処理を繰り返すことにより、目的の検索結果を求めます。アクセスプランは、このセクションごとの情報を出力します。

アクセスプランでは、以下の情報を出力します。

どこかのセクションで副問合せを判定する場合に、そのセクションのエレメント情報中の“subquery evaluation”で表示した副番号(副問合せの処理番号)に対応するように、副問合せの処理単位群を表示します。副問合せの副番号は、次の概念図のように表示します。

上図では、Main queryの1番目のセクションに副問合せが2つあるので、副番号は、それぞれ1-1(1番目のセクションの1番目の副問合せ)、1-2(1番目のセクションの2番目の副問合せ)と表現します。

Main queryの2番目のセクションに副問合せがある場合は、副番号は、2-1、2-2となります。

1-2の副問合せから、さらに副問合せがある場合は、1-2の副問合せの1番目のセクションの1番目の副問合せであるため、その副番号は、1-2.1-1のように表現します。

セクション情報

セクション情報は、そのセクションで実行する各エレメントのサマリ情報を出力します。

[1] セクションの番号

アクセスプラン上のMain queryまたは各Sub queryごとのセクション番号です。

[2] セクション名

そのセクションで処理する代表的なエレメント名を表示します。

セクション名

意味

SCAN

表、インデックス、ソートテーブルおよびワークテーブルからデータを取り出す。

M-JOIN

マージジョインを行う。

F-JOIN

フェッチジョインを行う。

N-JOIN

ネスティドループジョインを行う。

GROUP

検索結果をグループ化する。

UPDATE

表およびインデックスに対して、レコードの挿入、データの更新およびレコードの削除を行う。

[3] 入力資源名1

データの入力となる資源名を表示します。データベース資源の場合は、DSO名を先頭から18バイトの範囲で表示します。中間結果(ソートテーブルまたはワークテーブル)を入力する場合は、SORT0001やWORK0001のようにSymfoware/RDB内部で使用する番号付きの仮想作業域名で表示します。

[4] 入力資源名2

インデックスと表を同時に検索するなど、1つのセクションで複数のデータ資源を入力する場合に、入力資源名を表示します。1つしか資源を入力しない場合は、何も表示しません。

[5] 出力資源名

出力先の資源名を表示します。出力先がない場合(副問合せの最終セクション)は、何も表示しません。

出力資源名

意味

SORTxxxx

出力するソートテーブル名

WORKxxxx

出力するワークテーブル名

APPL

検索結果をアプリケーションに返却する

表DSO名

データベースを更新(INS/DEL/UPD)する場合の表のDSO名

1つのセクションに複数の処理内容がある場合は、複数行で表示することがあります。また、ジョインを行うときは、ジョインする表の数に応じて複数行で表示します。


1

表を読み込みながら更新対象行を見つけて、その行を更新する。

  =sno===sectname=====input1==============input2==============output/update======
     1 : SCAN        [TBL1_BASE_DSO     ][                  ][                  ]
         UPDATE      [                  ][                  ][TBL1_BASE_DSO     ]
2

表を読み込みながらグループ化する。

  =sno===sectname=====input1==============input2==============output/update======
     1 : SCAN        [TBL1_BASE_DSO     ][                  ][                  ]
         GROUP       [                  ][                  ][APPL              ]
3

TBL1とTBL2をフェッチジョインする。

  =sno===sectname=====input1==============input2==============output/update======
     1 : F-JOIN      [TBL1_BASE_DSO     ][                  ][                  ]
                     [TBL2_IX1_DSO      ][TBL2_BASE_DSO     ][APPL              ]

エレメント情報

[1] エレメント番号

当該セクション内でのエレメントの番号を表示します。

[2] エレメント名

エレメント名を表示します。エレメント名には以下のものがあります。

エレメント名

意味

SCAN

表、インデックス、ソートテーブルまたはワークテーブルからデータを取り出す

MERGE JOIN

マージジョインを行う

FETCH JOIN

フェッチジョインを行う

NESTED LOOP JOIN

ネスティドループジョインを行う

INSERT

表、インデックス、ソートテーブルまたはワークテーブルにレコードを挿入する

DELETE

表およびインデックスからレコードを削除する

UPDATE

表およびインデックスのデータを更新する

OUTPUT

問合せの結果をアプリケーションに返却する

GROUPING

複数のレコードをグループ化する

TRIGGER EXECUTION

トリガを実行する

各エレメントの詳細情報について説明します。

SCANエレメントの詳細情報

詳細情報

意味

table name

アクセス対象の表名、ソートテーブル名、ワークテーブル名
ソートテーブル名、ワークテーブル名は以下の形式で表示する。
  ソートテーブル名 : SORT0001,SORT0002,‥
  ワークテーブル名 : WORK0001,WORK0002,‥

dsi access

DSIの読込み情報
  ALL DSI :全DSIにアクセスする
  ONE DSI :1つのDSIにアクセスする
  SELECTED DSI :探索条件や動作環境ファイルでアクセスするDSIが絞られている (注1)

scan type

読込みのアクセス方式
  TABLE KEY SCAN :表をキー値で検索
  TABLE ALL SCAN :表の全件を順検索
  TABLE PARALLEL SCAN :表の全件を並列に検索
  INDEX KEY SCAN(n) :インデックスをキー範囲で検索(注2)
  INDEX ALL SCAN :インデックスの全件を順検索
  INDEX TABLE SCAN(n) :インデックスをキー範囲検索しながら表のレコードも取り出す(注2)

dso name

アクセス対象のDSO名
DSO名の後方に、そのDSO資源をアクセスするときの占有単位および占有モードを表示する。
  占有単位
    DSI : DSIの単位
    PAGE : ページ単位
    REC : レコード単位
    NONE : 占有しない
  占有モード
    SH : 共用モード
    EX : 非共用モード
    NONE : 占有しない

condition evaluation

条件の判定
  Yes : 条件を判定する
  No : 条件を判定しない

subquery evaluation

副問合せを判定する場合の副問合せの副番号

scan
record number

アクセス対象が、表またはインデックスの場合に、1DSI当たりの読み込むレコード件数の見積り値

注1) DSI分割を行っていない場合はこの情報は出力しません。

注2) (n)はインデックス検索に使用した列数を表します。


例1

表の全件検索(並列スキャン)の場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        dsi access       ALL DSI
        scan type        TABLE PARALLEL SCAN
        dso name         TBL1_BASE_DSO       [DSI/SH]
        condition evaluation  Yes
        scan record number    25000
例2

インデックスの検索の場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        INDEX KEY SCAN(1)
        dso name         TBL1_IX1_DSO        [PAGE/SH]
        condition evaluation  No
        scan record number    250
例3

インデックスと表を同時に検索する場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        INDEX TABLE SCAN(2)
        dso name         TBL1_IX1_DSO        [PAGE/SH]
                         TBL1_BASE_DSO       [PAGE/SH]
        condition evaluation  Yes
        subquery evaluation   -->2-1
        scan record number    50
例4

ソートテーブルからTIDを取り出し、表を検索する場合

  [  1] SCAN ELEMENT
        table name       SORT0001
        scan type        TABLE ALL SCAN
        condition evaluation  No
  [  2] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        TABLE KEY SCAN
        dso name         TBL1_BASE_DSO       [PAGE/SH]
        condition evaluation  No
        scan record number    1

参考

ソートテーブルからTIDを取り出して表を検索するときに読み込むレコード件数の見積り値は、1件と表現します。表からデータを取り出すSCANエレメントは、ソートテーブルに格納されているレコード件数分のSCANを繰り返します。

JOINエレメント(MERGE JOINFETCH JOINおよびNESTED LOOP JOIN)の詳細情報

詳細情報

意味

n) table name

ジョイン対象の表名、ソートテーブル名またはワークテーブル名ソートテーブル名、ワークテーブル名は以下の形式で表示する。
  ソートテーブル名 : SORT0001、SORT0002、‥
  ワークテーブル名 : WORK0001、WORK0002、‥
なお、表名の前の“n)”は結合する表の順番を意味する。

dsi access

DSIの読み込み情報
  ALL DSI :全DSIにアクセスする
  ONE DSI :1つのDSIにアクセスする
  SELECTED DSI :探索条件や動作環境ファイルでアクセスするDSIが絞られている (注1)

scan type

読込みのアクセス方式
  TABLE KEY SCAN :表をキー値で検索
  TABLE ALL SCAN :表の全件を順検索
  TABLE PARALLEL SCAN :表の全件を並列に検索
  INDEX KEY SCAN(n) :インデックスをキー範囲で検索(注2)
  INDEX ALL SCAN :インデックスの全件を順検索
  INDEX TABLE SCAN(n) :インデックスをキー範囲検索しながら表のレコードも取り出す(注2)

dso name

アクセス対象のDSO名
また、DSO名の後方に、そのDSO資源をアクセスするときの占有単位および占有モードを表示する。
占有単位
DSI : DSIの単位
PAGE : ページ単位
REC : レコード単位
NONE : 占有しない
占有モード
SH : 共用モード
EX : 非共用モード
NONE : 占有しない

join key column

MERGE JOIN時にジョインで使用した列数

condition evaluation

条件の判定 Yes : 条件を判定する No : 条件を判定しない

subquery evaluation

副問合せを判定する場合の副問合せの副番号

scan record number

アクセス対象が、表またはインデックスの場合に、1DSI当たりの読み込むレコード件数の見積り値

注1) DSI分割を行っていない場合はこの情報は出力しません。

注2) (n)はインデックス検索に使用した列数を表します。


例1

MERGE JOINの詳細情報

    [  1] MERGE JOIN ELEMENT
        1) table name       SCM1.TBL1
           scan type        INDEX ALL SCAN
           dso name         TBL1_IX1_DSO        [DSI/SH]
           join key column       2
           condition evaluation  No
           scan record number    2500
        2) table name       SORT0001
           scan type        TABLE ALL SCAN
           join key column       2
           condition evaluation  Yes
例2

FETCH JOINの詳細情報

  [  1] FETCH JOIN ELEMENT
        1) table name       SCM1.TBL1
           dsi access       SELECTED DSI
           scan type        INDEX KEY SCAN(3)
           dso name         TBL1_IX1_DSO        [PAGE/SH]
           condition evaluation  Yes
           scan record number    20
        2) table name       SCM1.TBL2
           dsi access       ONE DSI
           scan type        INDEX TABLE SCAN(2)
           dso name         TBL2_IX1_DSO        [PAGE/SH]
                            TBL2_BASE_DSO       [PAGE/SH]
           condition evaluation  Yes
           scan record number    10
例3

NESTED LOOP JOINの詳細情報

  [  1] NESTED LOOP JOIN ELEMENT
        1) table name       WORK0001
           scan type        TABLE ALL SCAN
           condition evaluation  No
        2) table name       SCM1.TBL2
           scan type        TABLE ALL SCAN
           dso name         TBL2_BASE_DSO       [DSI/SH]
           condition evaluation  Yes
           subquery evaluation   -->2-1
           scan record number    2000

参考

フェッチジョインおよびネスティドループジョインの2番目の表の読み込むレコード件数の見積りは、1番目の表の1レコードに結合する1DSI当たりのレコード数を表現します。

INSERTエレメントの詳細情報

詳細情報

意味

table name

挿入対象の表名、ソートテーブル名またはワークテーブル名

dso name

レコード挿入対象のDSO名一覧
DSO名の後方に、そのDSO資源をアクセスするときの占有単位および占有モードを表示する。
占有単位
DSI : DSIの単位
PAGE : ページ単位
REC : レコード単位
占有モード
EX : 非共用モード

insert record length

挿入対象がソートテーブルまたはワークテーブルの場合、ソートテーブルまたはワークテーブルに出力するレコード長を表示する。(単位はバイト)


例1

データベースへのINSERTの場合

  [  1] INSERT ELEMENT
        table name       SCM1.TBL1
        dso name         TBL1_BASE_DSO       [REC/EX]
                         TBL1_IX1_DSO        [REC/EX]
例2

ソートテーブルへのINSERTの場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        INDEX KEY SCAN(1)
        dso name         TBL1_IX1_DSO        [PAGE/SH]
        condition evaluation  No
        scan record number    500
  [  2] INSERT ELEMENT
        table name       SORT0001
        insert record length  58
DELETEエレメントの詳細情報

詳細情報

意味

table name

レコード削除対象の表名

dso name

レコード削除対象のDSO名一覧
DSO名の後方に、そのDSO資源をアクセスするときの占有単位および占有モードを表示する。
占有単位
DSI : DSIの単位
PAGE : ページ単位
REC : レコード単位
占有モード

EX : 非共用モード


表とインデックスからレコードを削除する場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        TABLE KEY SCAN
        dso name         TBL1_BASE_DSO       [PAGE/SH]
        condition evaluation  No
        scan record number    1
  [  2] DELETE ELEMENT
        table name       SCM1.TBL1
        dso name         TBL1_BASE_DSO       [PAGE/EX]
                         TBL1_IX1_DSO        [PAGE/EX]
UPDATEエレメントの詳細情報

詳細情報

意味

table name

更新対象の表名

dso name

更新対象のDSO名一覧
DSO名の後方に、そのDSO資源をアクセスするときの占有単位および占有モードを表示する。
占有単位
DSI : DSIの単位
PAGE : ページ単位
REC : レコード単位
占有モード
EX : 非共用モード


表とインデックスのデータを更新する場合

  [  1] SCAN ELEMENT
        table name       SORT0001
        scan type        TABLE ALL SCAN
        condition evaluation  No
  [  2] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        TABLE KEY SCAN
        dso name         TBL1_BASE_DSO       [PAGE/SH]
        condition evaluation  No
        scan record number    1
  [  3] UPDATE ELEMENT
        table name       SCM1.TBL1
        dso name         TBL1_BASE_DSO       [PAGE/EX]
                         TBL1_IX1_DSO        [PAGE/EX]
OUTPUTエレメントの詳細情報

詳細情報

意味

record length

出力するレコード長(単位はバイト)


表をインデックスで検索して、結果をアプリケーションに返却する場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        INDEX TABLE SCAN(1)
        dso name         TBL1_IX1_DSO        [PAGE/SH]
                         TBL1_BASE_DSO       [PAGE/SH]
        condition evaluation  No
        scan record number    10
  [  2] OUTPUT ELEMENT
        record length         150
GROUPINGエレメントの詳細情報

詳細情報

意味

condition evaluation

条件の判定
Yes : 条件を判定する
No : 条件を判定しない

subquery evaluation

副問合せを判定する場合の副問合せの副番号


表を検索してグループ化する場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        TABLE ALL SCAN
        dso name         TBL1_BASE_DSO       [NONE/NONE]
        condition evaluation  No
        scan record number    1000
  [  2] GROUPING ELEMENT
        condition evaluation  No
  [  3] OUTPUT ELEMENT
        record length         8
TRIGGER EXECUTIONエレメントの詳細情報

詳細情報

意味

trigger name

実行するトリガの名前一覧

表を更新したときにトリガを実行する場合

  [  1] SCAN ELEMENT
        table name       SCM1.TBL1
        scan type        TABLE KEY SCAN
        dso name         TBL1_BASE_DSO       [REC/SH]
        condition evaluation  No
        scan record number    1
  [  2] UPDATE ELEMENT
        table name       SCM1.TBL1
        dso name         TBL1_BASE_DSO       [REC/EX]
                         TBL1_IX1_DSO        [REC/EX]
  [  3] TRIGGER EXECUTION ELEMENT
        trigger name     SCM1.TRIGGER1

動作環境

動作環境には、以下の情報を出力します。

詳細情報

意味

transaction access
mode

トランザクションのアクセスモード
    READ ONLY
    READ WRITE

transaction isolation
level

トランザクションの独立性水準
    SERIALIZABLE
    REPEATABLE READ
    READ COMMITTED
    READ UNCOMMITTED

R_LOCK

行単位の排他の指定有無
    YES : 行単位の排他の指定あり
    NO : 行単位の排他の指定なし

JOIN_RULE

ジョインにマージジョインを優先するかフェッチジョインを優先するか。
    AUTO : Symfoware/RDBが自動的に選択する
    MERGE: マージジョインのアクセスモデルを優先する
    FETCH: フェッチジョインのアクセスモデルを優先する

JOIN_ORDER

結合表の中に指定した表と外に指定した表のジョイン順の指定。
    AUTO : Symfoware/RDBが自動的に選択する
    INSIDE: 結合表から先にジョインする
    OUTSIDE: 結合表の中に指定した表と結合表の外に指定した表から先にジョインする

SCAN_KEY_ARITHMETIC_RANGE

四則演算の検索範囲について、インデックス範囲検索、または、クラスタキーの検索を行うか否か
    YES : インデックスの範囲検索、または、クラスタキー検索を行う
    NO : インデックスの範囲検索、または、クラスタキー検索を行わない

SCAN_KEY_CAST

探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行うか
    YES : インデックスの範囲検索、または、クラスタキー検索を行う
    NO : インデックスの範囲検索、または、クラスタキー検索を行わない

TID_SORT

インデックス検索と表データ取得のアクセスモデルでTIDソートを利用するか否か。
    YES : TIDソートを利用する
    NO : TIDソートを利用しない

TID_UNION

TIDユニオンマージのアクセスモデルを有効にするか。
    YES : 有効にする
    NO : 有効にしない

USQL_LOCK

UPDATE文:探索またはDELETE文:探索の更新標的レコードを位置づける部分の占有モードの指定
    SH : 占有する
    EX : 占有しない

IGNORE_INDEX

インデックスを使用しないアクセスプランを選択するか否か。
    YES : インデックスを使用しないアクセスプランを選択
    NO : インデックスを使用するアクセスプランを選択

SS_RATE

述語ごとの検索範囲の選択率の値