В нескольких курсах, книгах и заданиях я видел текстовые поля, определенные как VARCHAR (255), как тип по умолчанию для «короткого» текста. Есть ли какая-либо веская причина, по которой длина 255 выбирается так часто, кроме того, чтобы быть хорошим круглым числом ? Является ли это воздержанием от какого-то времени в прошлом, когда имелась веская причина (применимо ли это сегодня или нет)?
Я, конечно, понимаю, что более жесткий предел был бы более идеальным, если бы вы знали максимальную длину струны. Но если вы используете VARCHAR (255), это, вероятно, означает, что вы не знаете максимальную длину, только то, что это «короткая» строка.
Примечание: я нашел этот вопрос ( varchar (255) v tinyblob v tinytext ), который говорит, что VARCHAR ( n ) требует n +1 байт памяти для n <= 255, n +2 байта памяти для n > 255. Это единственная причина? Это кажется произвольным, поскольку вы сохраняете только два байта по сравнению с VARCHAR (256), и вы можете также легко сохранить еще два байта, объявив его VARCHAR (253).
255 используется потому, что это наибольшее количество символов, которое можно посчитать с помощью 8-битного числа. Это максимизирует использование 8-битного счетчика, не требуя легкомысленного другого целого байта для подсчета символов выше 255.
При использовании этого способа VarChar использует только количество байтов + 1 для хранения вашего текста, поэтому вы можете также установить его на 255, если вы не хотите установить жесткое ограничение (например, 50) на количество символов в поле.
источник
utf8
,varchar(85)
это предел, по которому пересечение опрокидывает длину байта от одного до двух байтов. Если это такutf8mb4
, то этоvarchar(63)
. Это важно, потому что это максимум, на который можно увеличить длину VARCHAR с помощью онлайн-ALTER TABLE . Следовательно, я получил эти числа, создав таблицу соvarchar(2) charset utf8
столбцом и посмотрев, насколько мне удалось ее расширитьALGORITHM=INPLACE
.Вероятно, потому, что и SQL Server, и Sybase (чтобы назвать два, с которыми я знаком) раньше имели максимум 255 символов в количестве символов в
VARCHAR
столбце. Для SQL Server это изменилось в версии 7 в 1996/1997 или около того ... но старые привычки иногда умирали.источник
Я собираюсь ответить на буквальный вопрос: нет , нет веской причины, по которой вы видите, что VARCHAR (255) используется так часто (действительно есть причины , о которых говорилось в других ответах, просто не очень хорошие). Вы не найдете много примеров проектов, которые потерпели катастрофический крах, потому что архитектор выбрал VARCHAR (300) вместо VARCHAR (255). Это было бы проблемой почти полной незначительности, даже если вы говорили о CHAR вместо VARCHAR.
источник
Когда вы говорите, что
2^8
вы получаете256
, но цифры в терминах компьютеров начинаются с числа0
. Итак, вы получили255
, вы можете проверить его в маске интернета для IP или в самом IP.255
максимальное значение 8-битного целого числа:11111111 = 255
Это помогает?
источник
Нет. Вы не сохраняете два байта, объявляя 253. Реализация varchar - это, скорее всего, счетчик длины и неопределенный массив переменной длины. Это означает, что если вы храните «привет» в varchar (255), вы будете занимать 6 байтов: один байт для длины (число 5) и 5 байт для пяти букв.
источник
VARCHAR
этого способа сводит на нет весь смысл использованияVARCHAR
вместоCHAR
.1-байтовое число без знака может содержать диапазон [0-255] включительно. Так что, когда вы видите 255, это в основном потому, что программисты думают в основе
10
(понимаете?) :)На самом деле, какое-то время 255 был самым большим размером, который вы могли дать VARCHAR в MySQL, и есть преимущества использования VARCHAR по сравнению с TEXT с индексацией и другими проблемами.
источник
Во многих приложениях, таких как MsOffice (до версии 2000 или 2002), максимальное количество символов на ячейку составляло 255. Перемещение данных из программ, способных обрабатывать более 255 символов на поле в эти приложения, было кошмаром. В настоящее время лимит все меньше и меньше мешает.
источник
0000 0000 -> это 8-битное двоичное число. Цифра представляет бит.
Вы считаете так:
0000 0000 → (0)
0000 0001 → (1)
0000 0010 → (2)
0000 0011 → (3)
Каждый бит может иметь одно из двух значений: включено или выключено. Общее наибольшее число может быть представлено умножением:
Или
Мы вычитаем один, потому что первое число равно 0.
255 может содержать немало (не каламбур) значений.
Поскольку мы используем больше битов, максимальное значение увеличивается экспоненциально. Поэтому для многих целей добавление большего количества битов является излишним.
источник
Другая причина может заключаться в том, что в очень старых библиотеках доступа к данным в Windows, таких как RDO и ADO (COM-версия, а не ADO.NET), вам пришлось вызывать специальный метод GetChunk, чтобы получить данные из столбца с более чем 255 символами. Если вы ограничили столбец varchar значением 255, этот дополнительный код не понадобился.
источник