Hitachi

Hitachi Advanced Data Binder AP開発ガイド


5.9.1 ハッシュ実行

SELECT DISTINCTの処理方式にハッシュ実行が適用された場合,検索結果をハッシングしてハッシュテーブルを作成しながら重複排除を行います。

ハッシュ実行の適用例を次に示します。

■実行するSELECT文
SELECT DISTINCT "C1" FROM "T1"
図5‒19 ハッシュ実行の処理方式

[図データ]

[説明]

  1. T1を検索して,表T1C1列の値を取り出します。

  2. 1.の結果をハッシングしてハッシュテーブルを作成しながら重複排除を行います。

ハッシュテーブルはハッシュテーブル領域に作成されます。ハッシュテーブル領域サイズは,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドで指定します。なお,adb_sql_exe_hashtbl_area_sizeオペランドに0を指定した場合,ハッシュ実行は適用されません。

■ハッシュテーブル領域が不足した場合の対処方法

ハッシュテーブル領域が不足した場合,ハッシュテーブルに格納されるデータが複数の作業表に分割されて格納されます。そのため,SQL文の処理時間が長くなることがあります。ハッシュテーブル領域の不足を解消するには,サーバ定義またはクライアント定義のadb_sql_exe_hashtbl_area_sizeオペランドの指定値(ハッシュテーブル領域サイズの指定値)を大きくしてください。

ハッシュテーブル領域が不足して作業表が作成された場合,サーバメッセージログファイルにKFAA51130-Wメッセージが出力されます。

■ハッシュテーブル領域が不足した場合の処理の流れ

ハッシュテーブルの作成中に,ハッシュテーブル領域が不足した場合の処理の流れを説明します。

  1. ハッシュテーブルの作成中にハッシュテーブル領域が不足した場合,複数の作業表を作成します。ハッシュテーブルに格納するデータを,各作業表に分割して格納します。

    [図データ]

  2. 作業表ごとにハッシュテーブルを作成します。

    [図データ]

    作業表に対するハッシュテーブルを作成する際に,ハッシュテーブル領域不足が発生した場合,新たな作業表をさらに作成します。ハッシュテーブル領域に格納できなかったデータをその作業表に格納して重複排除を行います。

    [図データ]