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