Является ли VARCHAR(100) лучше, чем VARCHAR(500) с точки зрения производительности? А как насчет использования диска?
Сегодня мы говорим о PostgreSQL, а не о какой-то базе данных когда-то в истории.
Является ли VARCHAR(100) лучше, чем VARCHAR(500) с точки зрения производительности? А как насчет использования диска?
Сегодня мы говорим о PostgreSQL, а не о какой-то базе данных когда-то в истории.
Они одинаковые.
Из документации PostgreSQL:
http://www.postgresql.org/docs/8.3/static/datatype-character.html
Совет. Между этими тремя типами нет различий в производительности, за исключением увеличения размера хранилища при использовании типа с заполнением пробелами и нескольких дополнительных циклов для проверки длины при сохранении в столбец с ограничениями по длине. В то время как у character(n) есть преимущества в производительности в некоторых других системах баз данных, у него нет таких преимуществ в PostgreSQL. В большинстве ситуаций вместо этого следует использовать текстовые или символьные варианты.
Здесь они говорят о различиях между char(n), varchar(n) и text (= varchar(1G)). Официальная версия состоит в том, что нет никакой разницы между varchar(100) и текстом (очень большой varchar).
Нет никакой разницы между 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
ТЕКСТ /то же самое, что и VARCHAR без явного указания длины, текст
«Требование к хранению для короткой строки (до 126 байтов) составляет 1 байт плюс фактическая строка, которая включает пробел в случае символа. Более длинные строки имеют 4 байта служебных данных вместо 1. Длинные строки сжимаются системой. автоматически, поэтому физические требования к диску могут быть меньше.Очень длинные значения также хранятся в фоновых таблицах, чтобы они не мешали быстрому доступу к более коротким значениям столбцов.В любом случае, самая длинная возможная строка символов, которую можно сохранить, составляет примерно 1 ГБ».
относится как к VARCHAR, так и к TEXT (поскольку VARCHAR(n) — это всего лишь ограниченная версия TEXT). Искусственное ограничение ваших VARCCHARS не дает реальных преимуществ для хранения или производительности (накладные расходы основаны на фактической длине строки, а не на длине базового varchar), за исключением, возможно, сравнений с подстановочными знаками и регулярными выражениями (но на уровне, где это начинает важно, вам, вероятно, следует обратить внимание на что-то вроде поддержки полнотекстового индексирования PostgreSQL).