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
を返します。
例
クエリ:
結果: