Nullable(T)
T
が許可する通常の値と同時に「欠損値」を示す特別なマーカー(NULL)を保存できるようにします。例えば、Nullable(Int8)
型のカラムはInt8
型の値を保存でき、値が存在しない行はNULL
を保存します。
T
は、Array、Map、およびTupleのいずれかの複合データ型にはなれませんが、複合データ型はNullable
型の値を含むことができます。例えば、Array(Nullable(Int8))
のようになります。
Nullable
型のフィールドはテーブルインデックスに含めることができません。
NULL
は、ClickHouseサーバーの設定で特に指定されていない限り、すべてのNullable
型のデフォルト値です。
Storage Features
テーブルカラムにNullable
型の値を保存するために、ClickHouseは通常の値を保存するファイルに加えてNULL
マスクを持つ別のファイルを使用します。マスクファイル内のエントリにより、ClickHouseは各テーブル行の対応するデータ型のデフォルト値とNULL
を区別できます。追加のファイルがあるため、Nullable
カラムは通常のカラムと比較して追加のストレージスペースを消費します。
注記
Nullable
を使用すると、ほとんど常にパフォーマンスに悪影響を及ぼします。データベース設計時にはこれを考慮してください。
Finding NULL
カラム内のNULL
値を見つけるために、列全体を読み込むことなくnull
サブカラムを使用することができます。対応する値がNULL
の場合は1
を返し、そうでない場合は0
を返します。
例
クエリ:
結果: