2013-12-04 3 views
3

Я хотел бы знать, каков размер переменной перечисления PostgreSQL. Например, если я создам тип перечисления A со 100 различными элементами, каков будет размер в байтах? Кроме того, когда я создаю таблицу, которая содержит атрибут типа A, каков размер этого атрибута?Каков размер типа перечисления PostgreSQL?

Я проверил документацию PostgreSQL, но я не понял последнюю часть, которая рассказывает о размерах перечислений.

ответ

-3

В нижней строке, перечисление всегда либо int, byte, short или long.
Вы можете получить основной тип по телефону Enum.GetUnderlyingType:

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

Пожалуйста, обратите внимание, что this нить указывает Назначив основной тип short или long будет на самом деле до сих пор занимают 4 байта (т.е. же, как int.).

3

Размер перечисления 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=# 
Смежные вопросы