Подтвердить что ты не робот

Почему VARCHAR нуждается в спецификации длины?

Почему нам всегда нужно указывать VARCHAR(length) вместо VARCHAR? В любом случае это динамично.

UPD: Я озадачен тем, что он является обязательным (например, в MySQL).

4b9b3361

Ответ 1

"Длина" VARCHAR - это не длина содержимого, это максимальная длина содержимого.

Максимальная длина VARCHAR не является динамической, она фиксирована и поэтому должна быть указана.

Если вы не хотите определять максимальный размер для него, используйте VARCHAR (MAX).

Ответ 2

Во-первых, он не нужен во всех базах данных. Посмотрите SQL Server, где это необязательно.

Независимо от этого, он определяет максимальный размер для содержимого поля. Неплохая вещь сама по себе, и она передает значение (например, номера телефонов, где вам не нужны международные номера в поле).

Ответ 3

Вы можете видеть это как ограничение ваших данных. Это гарантирует, что вы не храните данные, которые нарушают ваши ограничения. Он концептуально подобен, например, ограничение проверки на целочисленный столбец, обеспечивающий ввод только положительных значений.

Ответ 4

Чем больше база данных знает о хранящихся данных, тем больше оптимизаций она может сделать при поиске/добавлении/обновлении данных с запросами.

Ответ 5

Возможная производительность impact: в MySQL, temporary tables и MEMORY tables хранит столбец VARCHAR в качестве столбца фиксированной длины, отложенный до максимальной длины.

Если вы создаете столбцы VARCHAR, намного превышающие требуемый размер, вы будете потреблять больше памяти, чем вам нужно. Это влияет на cache efficiency, sorting speed и т.д.

Итак, вы даете максимальную длину, которая находится под вашей строкой. например, если у вас максимальная длина символа 10, поэтому не давайте его длину 100 или больше.

Ответ 6

От Wikipedia:

Поля Varchar могут быть любого размера до предела. Предел отличается от типы баз данных, Oracle 9i База данных имеет предел 4000 байт, База данных MySQL имеет предел 65 535 байтов (для всей строки) и Microsoft SQL Server 2005 8000 байт (если не используется varchar (max), что имеет максимальную емкость 2,147,483,648 байт).

Ответ 7

Ответ вам не нужен, он необязательный.

Это там, если вы хотите, чтобы строки не превышали определенной длины.