Вопрос

Является ли 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top