Задать вопрос
@MishaXXL

Можно ли всем строковым полям задавать тип TEXT и повлияет ли это сильно на производительность?

На сколько адекватен подход задавать всем текстовым колонкам тип TEXT?
Что бы не писать каждый раз VARCHAR (255), TEXTили другую длину
Критично ли это для производительности, скорости записи-выборки или чего-то еще?
  • Вопрос задан
  • 222 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
AshBlade
@AshBlade
Просто хочу быть счастливым
Судя по этой статье можно всегда использовать TEXT вместо CHAR(N) и VARCHAR(N), т.к. производительность особо не страдает.

А если самому пойти в документацию, то можно увидеть следующее:
There is no performance difference among these three types, apart from increased storage space when using the blank-padded type, and a few extra CPU cycles to check the length when storing into a length-constrained column. While character(n) has performance advantages in some other database systems, there is no such advantage in PostgreSQL; in fact character(n) is usually the slowest of the three because of its additional storage costs. In most situations text or character varying should be used instead.

Т.е. в производительности разницы нет - только в стоимости хранения. (в отличие от других СУБД)
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
text и varchar - это одно и то же на уровне реализации postgresql.

varchar с каким-то разумным ограничением (не бессмысленный взятый с потолка 255 везде, а разумный для этого конкретного поля) тем не менее смысл имеет: куда проще найти ошибку в месте записи данных, чем потом искать, откуда в поле обычно содержащем до 30 символов взялось 10 мегабайт текста (история из практики, да)

Про char ограничусь цитатой письма Tom Lane
Type character(N) is a hangover from the days of punched cards. Don't use it.

Просто забудьте про такой тип данных. Он не только бесполезен, но и вреден.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы