Ответ - нет .
Не добавляйте модификатор длины, varcharесли вы можете избежать этого. В большинстве случаев вам вообще не нужно ограничение длины. Просто используйте textдля всех символьных данных. Сделайте это varchar(без модификатора длины), если вам нужно оставаться совместимым с СУБД, которых нет text.
Производительность почти то же самое - textэто немного быстрее , в редких случаях , и вы сохраните циклы для проверки на длину.
Если вам действительно нужно установить максимальную длину, все равно используйте textи добавьте проверочное ограничение для этого:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 51);
Вы можете изменить или удалить такое ограничение в любое время без необходимости связываться с определением таблицы и всеми зависимыми объектами (представлениями, функциями, внешними ключами, ...)
С модификаторами длины вы можете столкнуться с такими проблемами, как эта или эта или эта ...
В PostgreSQL 9.1 появилась новая функция, которая несколько облегчает боль. Я цитирую примечания к выпуску здесь :
Позволяют ALTER TABLE ... SET DATA TYPEизбежать переписывания таблиц в соответствующих случаях (Ноа Миш, Роберт Хаас)
Например, преобразование varcharстолбца в текст больше не требует переписывания таблицы. Однако увеличение ограничения длины для
varcharстолбца все еще требует перезаписи таблицы.