列存表支持的数据类型
列存表支持的普通数据类型如表1所示。
类别 | 数据类型 | 描述 | 长度 |
|---|---|---|---|
数值类型 | smallint | 小范围整数,别名为INT2。 | 2 |
integer | 常用的整数,别名为INT4。 | 4 | |
bigint | 大范围的整数,别名为INT8。 | 8 | |
decimal | 任意精度型。 | 可变长度 | |
numeric | 任意精度型。 | 可变长度 | |
real | 单精度浮点数。 | 4 | |
double precision | 双精度浮点数。 | 8 | |
smallserial | 二字节序列整型。 | 2 | |
serial | 四字节序列整型。 | 4 | |
bigserial | 八字节序列整型。 | 8 | |
货币类型 | money | 货币金额。 | 8 |
字符类型 | character varying(n), varchar(n) | 变长字符串。 | 可变长度 |
character(n), char(n) | 定长字符串。 | n | |
character、char | 单字节内部类型。 | 1 | |
text | 变长字符串。 | 可变长度 | |
nvarchar2 | 变长字符串。 | 可变长度 | |
clob | 文本大对象。 | 可变长度 | |
日期/时间类型 | timestamp with time zone | 日期和时间,带时区。 | 8 |
timestamp without time zone | 日期和时间。 | 8 | |
date | Oracle兼容模式下记录日期和时间;其他兼容模式下,记录日期。 | Oracle兼容模式下,占存储空间8字节;其他兼容模式下,占存储空间4字节。 | |
time without time zone | 只用于一日内时间。 | 8 | |
time with time zone | 只用于一日内时间,带时区。 | 12 | |
interval | 时间间隔。 | 16 | |
JSON类型 | json | - | - |
jsonb | - | - | |
XML类型 | xml | - | - |
RoaringBitmap | - | 高效位图,支持int类型数据集位图计算。 | 可变长度 |
数组类型支持情况与GUC参数enable_vectorization_array相关,具体如下:
- 当GUC参数enable_vectorization_array(该参数仅9.1.1.100及以上集群版本支持)打开时,列存表可支持的数组类型包括bool, tiny int, small int, int, bigint, float4, float8, numeric,text, char, varchar,nvarchar2,bpchar, tinterval, smalldatetime,date,time, timestamp, timestamptz, interval, timetz。
- enable_vectorization_array关闭时,不支持列存表创建数组类型。
- 其他未列举的数据类型,暂不支持。

