Ссылаясь на документацию Postgres на Типов символов , я неясен в точке указания длины для разных (Varchar).
Предположение:
. Это упоминается:
Требование хранения для короткой строки (до 126 байтов) 1 байт плюс фактическая строка, которая включает в себя пространственную прокладку в случае характера. Более длинные строки имеют 4 байта наверху вместо 1. Длинные струны сжимаются системой автоматически, поэтому Физическое требование на диске может быть меньше. Очень длинные ценности также хранится в фоновых таблицах, чтобы они не мешали быстрее Доступ к более короткому значению столбцов. В любом случае самый длинный Строка символов, которая может быть сохранена, составляет около 1 ГБ. (Максимальное значение это будет разрешено для n в типе данных Декларация меньше, чем который. Было бы не полезно изменить это, потому что с Multibyte Кодировки персонажей Количество символов и байтов может быть довольно разные.
Это говорит о размере строки, а не в размере поля, (то есть звучит, как он всегда будет сжать большую строку в большом поле Varchar, но не небольшая строка в большом варречке?)
I Задайте этот вопрос, так как было бы намного проще (и лениво) указывать гораздо большего размера, поэтому вам никогда не нужно беспокоиться о том, чтобы иметь слишком большую строку. Например, если я указываю VARCHAR (50) для имени место, я получу места, у которых есть больше символов (например, llanfairpwllgwyngyllgogerychwyrndrobwllllltysiliagogogogogog), но если я уточню varchar (100) или varchar (500), я меньше, чтобы получить эту проблему Отказ
Так что вы получите удар производительности между Varchar (500) и (произвольно) Varchar (5000000) или текстом (), если ваша самая большая строка была скажем, 400 символов длиной?
также из-за того, что у кого-то есть ответ на Это и знает ответ на это для других баз данных, пожалуйста, добавьте это тоже.
Я гуглал, но не нашел достаточно технического объяснения.