Nullable 컬럼은 피하세요

Nullable 컬럼은 피하세요

Nullable 컬럼은 별도의 UInt8 컬럼을 만들어 추가 저장 공간을 쓰고 거의 항상 성능을 떨어뜨립니다. 이 문서에서는 Nullable 컬럼 대신 기본값을 활용하는 방법을 보여드릴게요.

출처: 문서

본문

Nullable 컬럼(예: Nullable(String))은 UInt8 타입의 별도 컬럼을 생성합니다. 이 추가 컬럼은 사용자가 Nullable 컬럼을 다룰 때마다 처리되어야 하므로, 추가 저장 공간을 사용하고 거의 항상 성능에 부정적인 영향을 줍니다. Nullable 컬럼을 피하려면 해당 컬럼에 기본값(default value)을 설정하는 것을 고려해 보세요. 예를 들어 다음과 같은 대신:

CREATE TABLE default.sample
(
    `x` Int8,
    `y` Nullable(Int8)
)
ENGINE = MergeTree
ORDER BY x

이렇게 사용하세요:

CREATE TABLE default.sample2
(
    `x` Int8,
    `y` Int8 DEFAULT 0
)
ENGINE = MergeTree
ORDER BY x

사용 사례를 잘 고려하세요. 기본값이 적절하지 않을 수도 있습니다.

더 알아보기 (Learn more)