整型
整型分为有符号整型和无符号整型,
无符号整型:int8、int16、int32、int64。
有符号整型:UInt8、UInt16
浮点型
Float32 - float
Float64 - double
由于底层存储存在精度误差的问题,所以尽可能的以整数形式存储数据,例如:1.0 - 0.9
原本结果为0.1
,但实际存储的结果大概是0.0999999999999998
布尔型
clickhouse没有单独的类型存储布尔值,可使用uint8数据类型,限制使用0/1来代替布尔值
Decimal型
有符号的浮点数,优点是可以在加减等运算中保持精度。
Decimal32:有效位数 1 ~ 9
Decimal64:有效位数 1 ~ 18
Decimal128:有效位数 1 ~ 38
字符串类型
String : 一般用的比较多,不限制字符串的长度
FixedString(N):固定长度数据类型,不够N的用空字符串补齐,超出N的则提示错误,一般用在固定字符串长度的场景中
枚举类型
比如:假设有字段type : (“news” : 1, “tuji” : 2),则存储时不可以输入除此之外的值,否则会报错,这种方式从某种意义上来讲,算是一种空间上的优化,但是一定程度上,增加了维护成本
时间类型
Date : 格式如“年-月-日”
DateTime : 格式如 “年-月-日 时:分:秒”
数组
在使用数组时,尽可能不要使用多维数组,部分存储引擎并不支持多维数组
Nullable
使用nullable对性能产生负面影响