製品アップデート
製品お知らせ
EXPLAIN <SELECT_STATMENT>explain select * from t1 left join t2 on t1.id = t2.id;
+---------------------------------------------------------------------------------+| query plan |+---------------------------------------------------------------------------------+| ============================================ || |ID|OPERATOR |NAME|EST.ROWS| || -------------------------------------------- || |0 |HASH JOIN | |12500.00| || |1 |├─TABLE FULL SCAN (B) |t2 |10000.00| || |2 |└─TABLE FULL SCAN (P) |t1 |10000.00| || -------------------------------------------- || Details: || ------------------------------------- || 0 - JOIN TYPE: left outer join, EQUAL: [eq(singleton.t1.id, singleton.t2.id)] || 1 - STORAGE: LIBRASTORE, BLOCK OFFSET: 1 || 2 - STORAGE: LIBRASTORE, BLOCK OFFSET: 1 |+---------------------------------------------------------------------------------+
オペレータ名称 | オペレータ紹介 |
SORT | SORTオペレータは入力データをソートするために使用されます。 |
TOPN | ORDER BY 句の後に LIMIT 句が続く場合、オプティマイザは実行計画をさらに最適化し、TOP-N SORT オペレータを生成してヒープソートによってTOP-Nデータを選択できます。 |
LIMIT | LIMITオペレータはデータ出力の行数を制限するために使用され、これはMySQLのLIMITオペレータと同じ機能を持っています。 |
FILTER | FILTERオペレータは、指定された述語条件に基づいてデータをフィルタリングするために使用され、通常はWHERE/HAVING/ON句に現れます。 |
HASH JOIN | HASH JOINを利用して大規模データセットのJOIN操作を行います。オプティマイザは2つのデータセットテーブルを使用し、小さい方のテーブルをメモリ内でJOIN条件に基づいてハッシュテーブルを構築します。その後、データベースはより大きなデータセットをスキャンし、ハッシュテーブルをプローブして関連条件を満たす行を見つけます。 |
COLUMN READ | 遅延マテリアライゼーションオペレータは、読み取り専用分析エンジンが部分的なフィルタ条件をTableScanオペレータにプッシュダウンすることをサポートします。つまり、まずフィルタ条件に関連する列データをスキャンし、条件を満たす行をフィルタリングした後、これらの行の他の列データを再スキャンし、後続の計算を続行します。これにより、IOスキャンとデータ処理の計算量を削減します。 |
TABLE FULL SCAN | 対象テーブルに対してフルテーブルスキャンを実行します。 |
UINION | UNIONオペレータは、2つのクエリ結果セットに対して和集合演算を行うために使用されます。 |
WINDOW FUNCTION | WINDOW FUNCTIONオペレータは、SQLの分析関数(ウィンドウ関数とも呼ばれる)を実装するために使用され、ウィンドウ内の関連行の結果を計算します。ウィンドウ関数は各グループで複数行を返すことができ、グループ内の各行はウィンドウに基づく論理計算の結果です。 |
HASH GROUP BY | GROUP BYオペレータは、主にSQLでグループ集計計算操作を行うために使用されます。一般的な集計関数(SUM/MAX/MIN/AVG/COUNT/STDDEV)は、すべてGROUP BYオペレータを割り当てることで実行されます。 |
PROJECTION | 射影オペレータは、SQL文のSELECTリストに対応し、各入力データを新しい出力データにマッピングする機能を担います。 |
EXCHANGE RECEIVER | データ受信オペレータは、MPPクエリ実行時に各計算ノード間でデータを交換する際にデータを受信するために使用されます。 |
EXCHAGE SENDER | データ送信オペレータは、MPPクエリ実行時に各計算ノード間でデータを交換する際にデータを送信するために使用されます。 |
オペレータ名称 | Detail情報 |
SORT | ORDER BY KEY:ソートオペレータが採用するソートキーを指します。 |
TOPN | ORDER BY KEY:ソートオペレータが採用するソートキーを指します。 OFFSET:Limit操作で指定されるオフセット。 COUNT:Limit操作で指定される保持行数。 |
LIMIT | OFFSET:Limit操作で指定されるオフセット。 COUNT:Limit操作で指定される保持行数。 |
FILTER | CONDITIONS:FILTERオペレータがデータをフィルタリングする際に採用する述語条件を指します。 |
HASH JOIN | JOIN TYPE:現在のJOINのタイプ(例:インナージョイン、レフトアウタージョイン、セミジョインなど)。 NON EQUAL:現在のJOINがデカルト積かどうかを示します。このフィールドがない場合、デカルト積ではないことを意味します。 EQUAL:2つのテーブルがJOINを行う際に採用される等価条件を表示します。 OTHER COND:2つのテーブルがJOINを行う際の非等価条件を表示します。 さらに、上記のEXPLAIN結果でIDが1と2のオペレータ名の後にそれぞれ(B)と(P)のフラグが付いていることが確認できます。これらのフラグはHASH JOIN操作時のビルド側とプローブ側を示しており、Bはビルド、Pはプローブを表します。 |
COLUMN READ | COLUMN READ:遅延マテリアライゼーションで読み取られるカラム名。 |
TABLE FULL SCAN | STORAGE:読み取られる基盤ストレージタイプで、現在LIBRASTOREとTDSQLの2種類をサポートしています。 BLOCK OFFSET:現在のテーブルが全体のSQLにおけるクエリブロック番号であり、ヒントの使用を補助するために用いられます。 |
UINION | なし。 |
WINDOW FUNCTION | WINDOW FUCN DESCS:ウィンドウ関数の名称。 PARTITION BY:パーティションキー。 ORDER BY: ソートキー。 FRAME:ウィンドウ関数のウィンドウ定義。 |
HASH GROUP BY | GROUP BY:集約関数を実行する際に指定されるグループ化キー。 AGG FUNCS:SQLで指定された集計関数。 |
PROJECTION | EXPRS:プロジェクションオペレータが実行する式のリストであり、主に実行されるキャストおよび様々なスカラー関数です。 |
EXCHANGE RECEIVER | なし。 |
EXCHAGE SENDER | ExchangeType:データ交換に使用される方式。 PASS:複数のノードのデータを1つのノードに送信する。 BCJ: 1つのノードのデータを複数のノードにブロードキャストする。例として、JOIN時にビルドテーブルのデータを各ノードにブロードキャストし、JOIN操作を実行できるようにします。 HASH:データをハッシュ関数で分散させ、各ノードに配布する。例として、JOIN時に左右のテーブルデータを分散・再配置するために使用されます。 HASH (BY PARTITION):2つのテーブルをJOINする際、一方のテーブルの結合キーがパーティションキーである場合、もう一方のテーブルを結合キーがパーティションキーであるテーブルの分散方式に従ってシャッフルアウトします。 |
/*+ HASH_JOIN_PROBE(t1) */ は、オプティマイザがt1テーブルをhash joinのprobeテーブルとして強制的に採用することを示します。フィードバック