メインコンテンツまでスキップ
メインコンテンツまでスキップ

ジョインテーブルエンジン

JOIN 操作に使用するオプションの準備データ構造です。

注記

これは JOIN句 自体に関する記事ではありません。

テーブルの作成

CREATE TABLE クエリの詳細な説明を参照してください。

エンジンパラメータ

join_strictness

join_strictnessJOINの厳密さ

join_type

join_typeJOINのタイプ

キーカラム

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

join_use_nulls

max_rows_in_join

max_rows_in_join

max_bytes_in_join

max_bytes_in_join

join_overflow_mode

join_overflow_mode

join_any_take_last_row

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 テーブルから行を削除: