ジョインテーブルエンジン
JOIN 操作に使用するオプションの準備データ構造です。
これは JOIN句 自体に関する記事ではありません。
テーブルの作成
CREATE TABLE クエリの詳細な説明を参照してください。
エンジンパラメータ
join_strictness
join_strictness
– JOINの厳密さ。
join_type
join_type
– JOINのタイプ。
キーカラム
k1[, k2, ...]
– USING
句からのキー列で、JOIN
操作が行われます。
join_strictness
および join_type
パラメータは引用符なしで入力してください。たとえば、Join(ANY, LEFT, col1)
のように。これらは、テーブルが使用される JOIN
操作と一致する必要があります。パラメータが一致しない場合、ClickHouseは例外を投げず、正しくないデータを返す可能性があります。
特徴と推奨事項
データストレージ
Join
テーブルのデータは常にRAMにあります。テーブルに行を挿入すると、ClickHouseはデータブロックをディレクトリにディスク上に書き込み、サーバーが再起動するときにそれらを復元できるようにします。
サーバーが不正に再起動した場合、ディスク上のデータブロックが失われるか、損傷する可能性があります。この場合、損傷したデータのファイルを手動で削除する必要があるかもしれません。
データの選択と挿入
INSERT
クエリを使用して、Join
エンジンテーブルにデータを追加できます。テーブルが ANY
厳密さで作成された場合、重複キーのデータは無視されます。ALL
厳密さの場合は、すべての行が追加されます。
Join
エンジンテーブルの主な使用ケースは以下の通りです:
JOIN
句の右側にテーブルを配置します。- joinGet 関数を呼び出して、辞書からデータを抽出するのと同じ方法でテーブルからデータを取得します。
データの削除
Join
エンジンテーブルに対する ALTER DELETE
クエリは、ミューテーションとして実装されています。DELETE
ミューテーションは、フィルタリングされたデータを読み取り、メモリとディスクのデータを上書きします。
制限事項と設定
テーブルを作成する際、次の設定が適用されます:
join_use_nulls
max_rows_in_join
max_bytes_in_join
join_overflow_mode
join_any_take_last_row
join_use_nulls
persistent
Join および Set テーブルエンジンの持続性を無効にします。
I/Oのオーバーヘッドを削減します。パフォーマンスを追求し、持続性を要求しないシナリオに適しています。
可能な値:
- 1 — 有効
- 0 — 無効
デフォルト値: 1
Join
エンジンテーブルは、GLOBAL JOIN
操作で使用できません。
Join
エンジンは、CREATE TABLE
ステートメントにおいてjoin_use_nulls設定を指定することを許可します。SELECT クエリは同じ join_use_nulls
値を持つ必要があります。
使用例
左側のテーブルを作成:
右側の Join
テーブルを作成:
テーブルを結合:
代わりに、結合キーの値を指定して Join
テーブルからデータを取得できます:
Join
テーブルから行を削除: