Postgres - статьи




Каковы отличия между разными символьными типами?


Тип

Внутреннее имя

Замечания

VARCHAR(n) varchar размер задает максимальную длину, нет заполнения
CHAR(n) bpchar заполняется пустотой до фиксированной длины
TEXT text нет задаваемого верхнего ограничения или длины
BYTEA bytea массив байт переменной длины (можно использовать null-байт без опаски)
"char" char один символ

Внутреннее имя вы можете увидеть, когда смотрите системные каталоги и в некоторых сообщениях об ошибках.

Первые четыре типа являются "varlena" типами (т.е., первые четыре байта на диске являются длинной, за которой следуют данные). Таким образом, фактически используемое пространство больше, чем обозначенный размер. Однако, эти типы данных также поддаются сжатию или могут быть сохранены не в строком виде через TOAST, так что занимаемое дисковое пространство может также быть и меньше, чем ожидалось.

VARCHAR(n) - это лучшее решение, когда нужно хранить строки переменной длины, не превышающие определенного размера. TEXT - это лучшее решение для строк неограниченной длины, с максимально допустимой длиной в 1 гигабайт.

CHAR(n) - это лучшее решение для хранения строк, которые обычно имеют одинаковую длину. CHAR(n) заполняется пустотой до заданной длины, в то время как VARCHAR(n)

хранит только символы, из которых состоит строка. BYTEA используется для хранения бинарных данных, значения которых могут включать NULL байты. Все типы описанные здесь, имеют сходные характеристики производительности.




Содержание  Назад  Вперед