LowCardinality(T)
다른 데이터 타입의 내부 표현을 딕셔너리 인코딩된 형태로 변경합니다.
구문
매개변수
data_type— String, FixedString, Date, DateTime, 그리고 Decimal을 제외한 숫자형 데이터.LowCardinality는 일부 데이터 타입에서는 효율적이지 않습니다. 자세한 내용은 allow_suspicious_low_cardinality_types 설정 설명을 참조하십시오.
Description
LowCardinality는 데이터 저장 방식과 데이터 처리 규칙을 변경하는 상위 구조입니다. ClickHouse는 LowCardinality-컬럼에 dictionary coding을 적용합니다. 딕셔너리로 인코딩된 데이터를 사용하면 많은 애플리케이션에서 SELECT 쿼리의 성능이 크게 향상됩니다.
LowCardinality 데이터 타입의 효율성은 데이터의 고유 값 개수에 따라 달라집니다. 딕셔너리에 서로 다른 값이 10,000개 미만이면 ClickHouse는 대체로 데이터 읽기 및 저장 측면에서 더 높은 효율성을 보입니다. 딕셔너리에 서로 다른 값이 100,000개를 초과하면 일반적인 데이터 타입을 사용할 때와 비교해 ClickHouse의 성능이 더 나빠질 수 있습니다.
문자열을 처리할 때 Enum 대신 LowCardinality 사용을 고려하십시오. LowCardinality는 사용 측면에서 더 높은 유연성을 제공하며, 동일하거나 더 높은 효율성을 보이는 경우가 많습니다.
예시
다음과 같이 LowCardinality 컬럼을 갖는 테이블을 생성합니다:
관련 설정 및 함수
Settings:
- low_cardinality_max_dictionary_size
- low_cardinality_use_single_dictionary_for_part
- low_cardinality_allow_in_native_format
- allow_suspicious_low_cardinality_types
- output_format_arrow_low_cardinality_as_dictionary
Functions: