17.5.9 グループ分け処理方式の種類
- 暗黙的グループ分け処理:
-
問合せ式にGROUP BY句を指定しないで,選択式又はHAVING句中に集合関数を指定した場合の処理です。
- 明示的グループ分け処理:
-
問合せ式にGROUP BY句を指定した場合の処理です。
- 〈この項の構成〉
(1) HiRDB/シングルサーバ
(a) 暗黙的グループ分け処理をする場合
- IMPLICIT MIN-MAX INDEX:
-
集合関数MIN,MAXを求めるときに,インデクスの最小値,最大値だけを検索する処理方式です。
- IMPLICIT SET FUNCTION SCAN{+}:
-
行を検索するときに,集合関数の結果を同時に求める処理方式です。
- IMPLICIT NORMAL:
-
行を検索してから,集合関数の結果を求める処理方式です。
- IMPLICIT LIST SORT{SET FUNCTION SCAN}:
-
集合関数中にDISTINCTが含まれる場合に,作業表を作成し重複排除のためにソートしてから集合関数の結果を求める処理方式です。
- IMPLICIT SURROGATE(COUNT):
-
サロゲート機能を使用して集合関数の結果(行数)を求める処理方式です。サロゲート機能とは,プラグインインデクスを呼び出して探索条件を評価すると同時に,プラグイン提供関数の内部で集合関数の結果を求め,集合関数の結果を高速に返却する専用処理のことです。
- IMPLICIT SORT CANCEL BY INDEX{SET FUNCTION SCAN}:
-
重複排除のためのソート処理をしなくてもインデクスを検索することで,DISTINCT集合関数に指定した列をソートできる場合に,重複排除のためのソート処理を省略し,集合関数の結果を求める処理方式です。
(b) 明示的グループ分け処理をする場合
- SORT CANCEL BY INDEX{SET SCAN}:
-
グループ化のためのソート処理をしなくても,インデクスを検索することでグループ化列をソートできる場合に,グループ化のためのソート処理を省略する方式です。
- SORT CANCEL BY JOIN:
-
グループ化のためのソート処理が,マージジョインのためのソート処理によってキャンセルされる場合に,グループ化のためのソート処理を省略する方式です。
- HASH:
-
グループ分け高速化機能を使用する方式です。グループ分け高速化機能については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
- LIST SORT:
-
作業表を作成してソートすることでグループ化処理をし,グループ化の結果を求める処理方式です。
- PRE-SORT JOIN:
-
すべてのグループ化列が,結合する前の外表又は外側の結合表に含まれる場合に,結合する前の外表又は外側の結合結果に対してソートをして,ソート順を保ったまま結合してグループ化処理をすることで,グループ化の結果を求める処理方式です。
(2) HiRDB/パラレルサーバ
(a) 暗黙的グループ分け処理をする場合
- IMPLICIT MIN-MAX INDEX:
-
集合関数MIN,MAXを求めるときに,各バックエンドサーバで,インデクスの最小値,最大値だけを検索する処理方式です。
- IMPLICIT SET FUNCTION SCAN{+}:
-
各バックエンドサーバで,行を検索するときに,集合関数の結果を同時に求める処理方式です。
- IMPLICIT NORMAL:
-
各バックエンドサーバで,行を検索してから,バックエンドサーバごとの集合関数の結果を求める処理方式です。
- IMPLICIT FLOATABLE:
-
フロータブルサーバに集めて全体の集合関数の結果を求める処理方式です。
- IMPLICIT FLOATABLE SORT{SET FUNCTION SCAN}:
-
集合関数中にDISTINCTが含まれる場合に,フロータブルサーバに集めて作業表を作成し,重複排除のためにソートしてから集合関数の結果を求める処理方式です。
- IMPLICIT SURROGATE(COUNT):
-
各バックエンドサーバで,サロゲート機能を使用してバックエンドサーバごとの集合関数の結果(行数)を求める処理方式です。サロゲート機能とは,プラグインインデクスを呼び出して探索条件を評価すると同時に,プラグイン提供関数の内部で集合関数の結果を求め,集合関数の結果を高速に返却する専用処理のことです。
- IMPLICIT SORT CANCEL BY INDEX{SET FUNCTION SCAN}:
-
重複排除のためのソート処理をしなくてもインデクスを検索することで,DISTINCT集合関数に指定した列をソートできる場合に,重複排除のためのソート処理を省略し,集合関数の結果を求める処理方式です。
- IMPLICIT LIST SORT{SET FUNCTION SCAN}:
-
集合関数にDISTINCTが含まれる場合に,各バックエンドサーバで作業表を作成し,重複排除のためにソートしてから集合関数の結果を求める処理方式です。
(b) 明示的グループ分け処理をする場合
- SORT CANCEL BY INDEX{SET SCAN}:
-
グループ化のためのソート処理をしなくても,インデクスを検索することでグループ化列をソートできる場合に,グループ化のためのソート処理を省略する方式です。
- SORT CANCEL BY JOIN:
-
グループ化のためのソート処理が,マージジョインのためのソート処理によってキャンセルされる場合に,グループ化のためのソート処理を省略する方式です。
- HASH:
-
グループ分け高速化機能を使用してグループ化の結果を求める処理方式です。グループ分け高速化機能については,マニュアル「HiRDB UAP開発ガイド」を参照してください。
- LIST SORT:
-
各バックエンドサーバで作業表を作成してソートし,グループ化の結果を求める処理方式です。
- PRE-SORT JOIN:
-
すべてのグループ化列が,結合する前の外表又は外側の結合表に含まれる場合に,結合する前にソートをし,ソート順を保ったまま結合してグループ化処理をすることで,グループ化の結果を求める処理方式です。
- FLOATABLE SORT:
-
複数のフロータブルサーバに転送し,作業表を作成してソートすることでグループ化の結果を求める処理方式です。