использование varchar вместо varchar(n) с Postgresql

Я разрабатываю базу данных, так как я еще не знаком с типами данных, мне было интересно следующее:

Если меня не волнует длина вектора символов, уместно ли использовать varchar? (даже если ожидается, что строки будут довольно короткими?)

До сих пор я использовал text (varchar), когда мне нужно было хранить очень длинные строки, но, читая документацию и задавая вопросы, я слышал, что postgresql не хранит дополнительные байты, если максимальная длина предоставляется, а длина хранимой строки меньше его. Я предполагаю, что максимальная длина используется в случае, если удаленное устройство не может предоставить большой объем памяти. Можно ли с этим согласиться или объяснить?


person vdegenne    schedule 13.05.2013    source источник


Ответы (1)


Из документов:

Между этими тремя типами нет разницы в производительности, за исключением увеличения места для хранения при использовании типа с заполнением пробелами и нескольких дополнительных циклов ЦП для проверки длины при сохранении в столбец с ограничениями по длине. В то время как в некоторых других системах баз данных у character(n) есть преимущество в производительности, в PostgreSQL такого преимущества нет; на самом деле character(n) обычно является самым медленным из трех из-за дополнительных затрат на хранение. В большинстве ситуаций вместо этого следует использовать текстовые или символьные варианты.

person Chris Farmiloe    schedule 13.05.2013
comment
поэтому не могли бы вы сказать, что использование текста или varchar, даже если ожидаемые сохраненные строки обычно короткие (и могут быть также длинными), подходит, если пространство памяти не является проблемой? - person vdegenne; 13.05.2013