5.9.1 ハッシュ実行
SELECT DISTINCTの処理方式にハッシュ実行が適用された場合,検索結果をハッシングしてハッシュテーブルを作成しながら重複排除を行います。
ハッシュ実行の適用例を次に示します。
- ■実行するSELECT文
-
SELECT DISTINCT "C1" FROM "T1"
図5‒19 ハッシュ実行の処理方式 [説明]
-
表T1を検索して,表T1のC1列の値を取り出します。
-
1.の結果をハッシングしてハッシュテーブルを作成しながら重複排除を行います。
-
ハッシュテーブルはハッシュテーブル領域に作成されます。ハッシュテーブル領域サイズは,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。なお,adb_sql_exe_hashtbl_area_sizeオペランドに0を指定した場合,ハッシュ実行は適用されません。
- ■ハッシュテーブル領域が不足した場合の対処方法
-
ハッシュテーブル領域が不足した場合,ハッシュテーブルに格納されるデータが複数の作業表に分割されて格納されます。そのため,SQL文の処理時間が長くなることがあります。ハッシュテーブル領域の不足を解消するには,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドの指定値(ハッシュテーブル領域サイズの指定値)を大きくしてください。
ハッシュテーブル領域が不足して作業表が作成された場合,サーバメッセージログファイルにKFAA51130-Wメッセージが出力されます。
- ■ハッシュテーブル領域が不足した場合の処理の流れ
-
ハッシュテーブルの作成中に,ハッシュテーブル領域が不足した場合の処理の流れを説明します。
-
ハッシュテーブルの作成中にハッシュテーブル領域が不足した場合,複数の作業表を作成します。ハッシュテーブルに格納するデータを,各作業表に分割して格納します。
-
作業表ごとにハッシュテーブルを作成します。
作業表に対するハッシュテーブルを作成する際に,ハッシュテーブル領域不足が発生した場合,新たな作業表をさらに作成します。ハッシュテーブル領域に格納できなかったデータをその作業表に格納して重複排除を行います。
-