mysql -поле для текста

#mysql #sql #string #types

#mysql #sql #строка #типы

Вопрос:

Мне нужно поле в моей таблице для хранения некоторого текста. 300 символов — это предел для текста.

Какой вариант является лучшим выбором: varchar (300) или text ?

Ответ №1:

Столбцы VARCHAR и TEXT очень похожи. В руководстве говорится:

В большинстве случаев вы можете рассматривать столбец BLOB как переменный столбец, который может быть сколь угодно большим. Аналогично, вы можете рассматривать текстовый столбец как столбец VARCHAR .

Вот несколько отличий:

  1. ТЕКСТОВЫЕ столбцы заполняются пробелами в конце для целей индексации
  2. ТЕКСТОВЫЕ столбцы не могут иметь значения по умолчанию
  3. Столбцы VARCHAR имеют только 1 байт служебных данных, если количество байтов, необходимых для текста, меньше 256. (Количество байтов, необходимых для конкретного текста, зависит от кодировки.) ТЕКСТОВЫЕ столбцы всегда имеют 2 байта служебных данных.
  4. Весь текст в столбцах VARCHAR учитывается при ограничении строк в 65 535 байт. Текст текстовых столбцов хранится отдельно и не учитывается в соответствии с этим ограничением.

Ответ №2:

если у вас есть какие-либо причины беспокоиться о памяти, varchar будет выделена только используемая память. Я не уверен, как text это делается, но я бы использовал varchar (300)

Ответ №3:

Используйте VARCHAR(300) — если спецификация требует ограничения в 300 символов, вы не хотите поддерживать превышение этого. Мне придется откопать свой ответ, но кто-то сообщил о существенном улучшении, перенеся свои TEXT столбцы в VARCHAR .