Влияет ли объявленный размер поля varchar на PostgreSQL?
-
21-08-2019 - |
Вопрос
Является ли VARCHAR(100) лучше, чем VARCHAR(500) с точки зрения производительности?А как насчет использования диска?
Сегодня мы говорим о PostgreSQL, а не о какой-то базе данных из истории.
Решение
Они идентичны.
Из документации PostgreSQL:
http://www.postgresql.org/docs/8.3/static/datatype-character.html
Кончик:Между этими тремя типами нет различий в производительности, помимо увеличения размера хранения при использовании типа с пустыми платья, и нескольких дополнительных циклов, чтобы проверить длину при хранении в столбце с ограниченной длиной.В то время как символ (n) имеет преимущества производительности в некоторых других системах баз данных, он не имеет таких преимуществ в PostgreSQL.В большинстве ситуаций текст или символ варьируются вместо этого.
Здесь речь идет о различиях между char(n), varchar(n) и текстом (= varchar(1G)).Официальная версия заключается в том, что нет никакой разницы между varchar(100) и текстом (очень большим varchar).
Другие советы
ТЕКСТ /является/ таким же, как VARCHAR без явной длины, текст
«Требование хранения для короткой строки (до 126 байтов) составляет 1 байт плюс фактическая строка, которая включает в себя пространственную прокладку в случае символа.Более длинные строки имеют 4 байта над головой вместо 1.Длинные строки автоматически сжимаются системой, поэтому физическое требование на диске может быть меньше.Очень длинные значения также хранятся в фоновых таблицах, так что они не мешают быстрому доступу к более коротким значениям столбца.В любом случае, самая длинная строка символов, которая может храниться, составляет около 1 ГБ ».
относится как к VARCHAR, так и к TEXT (поскольку VARCHAR(n) — это всего лишь ограниченная версия TEXT).Искусственное ограничение ваших VARCHARS не дает реальных преимуществ в отношении памяти или производительности (накладные расходы основаны на фактической длине строки, а не на длине базового varchar), за исключением, возможно, сравнений с подстановочными знаками и регулярными выражениями (но на уровне, где это начинает неважно, вам, вероятно, следует обратить внимание на что-то вроде поддержки полнотекстового индексирования PostgreSQL).
Нет никакой разницы между varchar(m)
и varchar(n)
..
http://archives.postgresql.org/pgsql-admin/2008-07/msg00073.php
Есть разница между varchar(n)
и text
хотя, varchar(n)
имеет встроенное ограничение, которое необходимо проверять, и на самом деле оно немного медленнее.
http://archives.postgresql.org/pgsql-general/2009-04/msg00945.php