枚举PostgreSQL类型的大小是多少?

时间:2013-12-04 14:29:02

标签: sql postgresql enums

我想知道PostgreSQL的枚举变量的大小是多少。例如,如果我创建一个包含100个不同项的枚举类型A,它的大小(以字节为单位)是多少?另外,当我创建一个包含A类属性的表时,该属性的大小是多少?

我检查了PostgreSQL文档,但我不明白最后一部分讨论枚举类型大小。

2 个答案:

答案 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)

在底线,枚举始终是intbyteshortlong。 您可以通过调用Enum.GetUnderlyingType来获取基础类型:

Type underlyingType = Enum.GetUnderlyingType(typeof(PostgreSQL));

请注意,this线程表示分配基础类型shortlong实际上仍会占用4个字节(即与int相同)。