5.10.2 SQLを実行した場合に作成される作業表について
次の表に示すSQLを実行した場合に作業表が作成されます。
- 重要
-
作業表の行長が最大行長を超えた場合,SQL文がエラーになります。作業表の最大行長については,マニュアルHADB システム構築・運用ガイドのデータベースに関する最大値と最小値を参照してください。作業表の行長の求め方については,マニュアルHADB システム構築・運用ガイドの作業表を格納するために必要な基本行用ページ数の求め方の変数ROWSZを参照してください。
項番 |
作業表が作成されるSQL |
作業表の用途 |
作業表の構成列 |
作業表の種類 |
|
---|---|---|---|---|---|
1 |
ORDER BY句を指定した場合 |
集合演算の結果をソートキーとする場合 |
検索結果のソート処理に使われます。 |
|
ローカル作業表 |
問合せ指定の結果をソートキーとする場合 |
|
||||
2 |
GROUP BY句を指定した場合 |
グループ化の処理方式がグローバルハッシュグループ化の場合※2 |
グループ分けの結果を保持するために使われます。なお,この作業表は,ハッシュテーブル領域が不足した場合に使われます。 ハッシュテーブル領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。 |
|
|
グループ化の処理方式がローカルハッシュグループ化の場合※2 |
グループ分けのソート処理に使います。なお,この作業表は,ハッシュグループ化領域が不足した場合に使われます。ハッシュグループ化領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashgrp_area_sizeオペランドで指定します。 |
|
ローカル作業表 |
||
グループ化の処理方式がソートグループ化の場合※2 |
グループ分けのソート処理に使われます。 |
||||
3 |
SELECT DISTINCTを指定した場合 |
SELECT DISTINCTの処理方式がハッシュ実行の場合※12 |
検索結果を保持するための処理に使われます。なお,この作業表は,ハッシュテーブル領域が不足した場合に使われます。ハッシュテーブル領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。 |
|
|
SELECT DISTINCTの処理方式が作業表実行の場合※12 |
検索結果をソート,重複排除するための処理に使われます。 |
|
ローカル作業表 |
||
4 |
次のどれかの関数を指定した場合
|
グループ化の処理方式がグローバルハッシュグループ化の場合※2 |
重複排除された集合関数の入力値を保持するために使われます。なお,この作業表は,ハッシュテーブル領域が不足した場合に使われます。ハッシュテーブル領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。 |
|
|
グループ化の処理方式がグローバルハッシュグループ化以外の場合※2 |
集合関数の入力値を重複排除するための処理,または集合関数の入力値をソートするための処理に使われます。 |
||||
5 |
ウィンドウ関数を指定した場合 |
ウィンドウ関数の結果を求めるためのソート処理に使われます。 |
|
ローカル作業表 |
|
6 |
FROM句に複数の表参照を指定した場合 |
表の結合方式がハッシュジョインの場合※3 |
表の結合処理で,結合対象となる表参照の結果を保持するために使われます。なお,この作業表は,ハッシュテーブル領域が不足した場合に使われます。ハッシュテーブル領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。 |
|
|
表の結合方式がネストループジョインの場合※3 |
表の結合処理で,結合対象となる表参照の結果を保持するために使われます。 |
グローバル作業表 |
|||
7 |
導出表を指定した場合 |
導出表に対応する問合せ式本体の結果を保持するために使われます。 |
|
グローバル作業表 |
|
8 |
ビュー表を指定した場合 |
ビュー表に対応する問合せ式の結果を保持するために使われます。 |
|
グローバル作業表 |
|
9 |
WITH句を指定した場合 |
問合せ名に対応する問合せ式本体の結果を保持するために使われます。 |
|
グローバル作業表 |
|
10 |
表関数導出表を指定した場合 |
表関数導出表を導出するシステム定義関数の結果を保持するために使われます。 |
|
グローバル作業表 |
|
11 |
結合表を指定した場合 |
結合表の結果を保持するために使われます。 なお,結合表の結果を求めるための作業表については,項番6のFROM句に複数の表参照を指定した場合を参照してください。 |
|
グローバル作業表 |
|
12 |
副問合せを指定した場合 |
副問合せの処理方式がハッシュ実行の場合※4 |
副問合せの結果を保持するために使われます。なお,この作業表は,ハッシュテーブル領域が不足した場合に使われます。ハッシュテーブル領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。 |
|
|
副問合せの処理方式がハッシュ実行以外の場合※4 |
副問合せの結果を保持するために使われます。 |
|
グローバル作業表 |
||
13 |
集合演算を指定した場合 |
集合演算の処理方式がハッシュ実行の場合※13 |
重複排除の結果を保持するために使われます。なお,この作業表は,ハッシュテーブル領域が不足した場合に使われます。ハッシュテーブル領域は,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。 |
|
|
集合演算の処理方式が作業表実行の場合※13 |
検索結果をソート,重複排除するための処理に使われます。 |
|
ローカル作業表 |
||
14 |
再帰的問合せの指定がある場合 |
アンカーメンバの結果,および再帰的メンバの結果を保持するために使われます。 |
|
グローバル作業表 |
- 注※1
-
行IDとは,行の格納位置を示す値のことをいいます。行IDのデータ型はCHAR(16)です。
- 注※2
-
グループ化の処理方式については,「5.7 グループ化の処理方式」を参照してください。
- 注※3
-
表の結合方式については,「5.5 表の結合方式」を参照してください。
- 注※4
-
副問合せの処理方式については,「5.6 副問合せの処理方式」を参照してください。
- 注※5
-
外への参照列については,マニュアルHADB SQLリファレンスの副問合せの指定形式および規則を参照してください。
- 注※6
-
内部導出表の展開によって実表として扱われることがあります。内部導出表の展開については,マニュアルHADB SQLリファレンスの内部導出表を参照してください。
- 注※7
-
ハッシュテーブル領域が不足した場合に,ハッシュテーブル領域に格納するデータを分割して格納する際に使用する作業表です。
- 注※8
-
ハッシュテーブル領域に格納するデータを作業表に格納したあと,さらにハッシュテーブル領域が不足した場合に,処理できなかったデータを格納する際に使用する作業表です。
- 注※9
-
HADBサーバがハッシュ処理で使用する情報を格納するための列のデータ型はINTEGER型になります。
- 注※10
-
ハッシュテーブル領域に格納するデータを作業表に格納したあと,さらにハッシュテーブル領域が不足した場合に,処理できなかったデータを格納する際に使用する作業表で作成される列です。
- 注※11
-
定義長が128バイト以上の列は,対象外になります。定義長が128バイト以上の列とは,次の列のことです。
-
定義長が128バイト以上のCHARACTER型の列
-
定義長が128バイト以上のVARCHAR型の列
-
定義長が128バイト以上のBINARY型の列
-
定義長が128バイト以上のVARBINARY型の列
-
- 注※12
-
SELECT DISTINCTの処理方式については,「5.9 SELECT DISTINCTの処理方式」を参照してください。
- 注※13
-
集合演算の処理方式については,「5.8 集合演算の処理方式」を参照してください。
SQLを実行した結果,作業表が作成されたかどうかを,アクセスパスで確認することができます。アクセスパスについては,次に示す個所を参照してください。
-
アクセスパスの確認方法
「6.1.2 アクセスパスを確認するには」を参照してください。
-
アクセスパスに表示される内容
「6.1.4 ツリー表示に出力される情報」の「(8) 作業表の作成情報」を参照してください。