我想知道PostgreSQL的枚举变量的大小是多少。例如,如果我创建一个包含100个不同项的枚举类型A,它的大小(以字节为单位)是多少?另外,当我创建一个包含A类属性的表时,该属性的大小是多少?
我检查了PostgreSQL文档,但我不明白最后一部分讨论枚举类型大小。
答案 0 :(得分:6)
枚举的大小是4个字节的磁盘。期。这是因为枚举实现为整数或短路。每个整数值的标签保存在系统目录pg_enum
中。您可以通过查询来查看它:
test=# select * from pg_enum;
enumtypid | enumsortorder | enumlabel
-----------+---------------+-----------
(0 rows)
test=# create type test_enum_t as enum('a','b','c');
CREATE TYPE
test=# select * from pg_enum;
enumtypid | enumsortorder | enumlabel
-----------+---------------+-----------
68850 | 1 | a
68850 | 2 | b
68850 | 3 | c
(3 rows)
test=#
答案 1 :(得分:-3)
在底线,枚举始终是int
,byte
,short
或long
。
您可以通过调用Enum.GetUnderlyingType
来获取基础类型:
Type underlyingType = Enum.GetUnderlyingType(typeof(PostgreSQL));
请注意,this线程表示分配基础类型short
或long
实际上仍会占用4个字节(即与int
相同)。