Почему нам всегда нужно указывать VARCHAR(length)
вместо VARCHAR
? В любом случае это динамично.
UPD: Я озадачен тем, что он является обязательным (например, в MySQL).
Почему нам всегда нужно указывать VARCHAR(length)
вместо VARCHAR
? В любом случае это динамично.
UPD: Я озадачен тем, что он является обязательным (например, в MySQL).
"Длина" VARCHAR - это не длина содержимого, это максимальная длина содержимого.
Максимальная длина VARCHAR не является динамической, она фиксирована и поэтому должна быть указана.
Если вы не хотите определять максимальный размер для него, используйте VARCHAR (MAX).
Во-первых, он не нужен во всех базах данных. Посмотрите SQL Server, где это необязательно.
Независимо от этого, он определяет максимальный размер для содержимого поля. Неплохая вещь сама по себе, и она передает значение (например, номера телефонов, где вам не нужны международные номера в поле).
Вы можете видеть это как ограничение ваших данных. Это гарантирует, что вы не храните данные, которые нарушают ваши ограничения. Он концептуально подобен, например, ограничение проверки на целочисленный столбец, обеспечивающий ввод только положительных значений.
Чем больше база данных знает о хранящихся данных, тем больше оптимизаций она может сделать при поиске/добавлении/обновлении данных с запросами.
Возможная производительность impact
: в MySQL, temporary tables
и MEMORY tables
хранит столбец VARCHAR
в качестве столбца фиксированной длины, отложенный до максимальной длины.
Если вы создаете столбцы VARCHAR
, намного превышающие требуемый размер, вы будете потреблять больше памяти, чем вам нужно. Это влияет на cache efficiency, sorting speed
и т.д.
Итак, вы даете максимальную длину, которая находится под вашей строкой. например, если у вас максимальная длина символа 10, поэтому не давайте его длину 100 или больше.
От Wikipedia:
Поля Varchar могут быть любого размера до предела. Предел отличается от типы баз данных, Oracle 9i База данных имеет предел 4000 байт, База данных MySQL имеет предел 65 535 байтов (для всей строки) и Microsoft SQL Server 2005 8000 байт (если не используется varchar (max), что имеет максимальную емкость 2,147,483,648 байт).
Ответ вам не нужен, он необязательный.
Это там, если вы хотите, чтобы строки не превышали определенной длины.