Engineering · 1 min read
ClickHouse 資料型別:實務上真正會碰到的那些
實務專案裡真正會碰到的 ClickHouse 資料型別:數值、日期時間、字串、LowCardinality、Nullable,以及複合的 Array/Tuple/Map(陣列從 index 1 開始)。
專案常用型別
先整理出目前實務專案裡最常碰到的幾組:
DateTime
String
LowCardinality(String)
UInt8
UInt16
UInt32
Int64
Float64
Nullable(Float64)
Array(String)
Array(UInt32)
Array(LowCardinality(String))
核心型別分類
數值
- 整數:
UInt8/16/32/64/128/256、Int8/16/32/64/128/256(共 12 種) - 浮點:
Float32、Float64 - Decimal:
Decimal、Decimal32/64/128/256
日期與時間
Date:範圍[1970-01-01, 2149-06-06],0= 1970-01-01Date32:範圍[1900-01-01, 2299-12-31]DateTime、DateTime64:儲存時間與額外的「時區」
字串與二進位
String、FixedString(N)
布林
Bool(內部以UInt8儲存)
特殊用途
UUID:128 bits 的高效表示IPv4、IPv6Enum、Enum8、Enum16JSONLowCardinality(T)(wrapper):改用字典編碼儲存;欄位相異值少(理想 < 10K)時,大幅提升SELECT效能Nullable(T)(wrapper)
複合與巢狀
Array(T):index 從 「1」 開始Tuple(T1, T2, …)Map(key_type, value_type)Point、Ring、Polygon、MultiPolygon(geo)
參考來源
- ClickHouse Data Types — https://clickhouse.com/docs/en/sql-reference/data-types
Related: 回到跨引擎資料庫查詢總覽,或接著看 ClickHouse 陣列與條件函式。