#mysql #sql #string #types
#mysql #sql #строка #типы
Вопрос:
Мне нужно поле в моей таблице для хранения некоторого текста. 300 символов — это предел для текста.
Какой вариант является лучшим выбором: varchar (300)
или text
?
Ответ №1:
Столбцы VARCHAR и TEXT очень похожи. В руководстве говорится:
В большинстве случаев вы можете рассматривать столбец BLOB как переменный столбец, который может быть сколь угодно большим. Аналогично, вы можете рассматривать текстовый столбец как столбец VARCHAR .
Вот несколько отличий:
- ТЕКСТОВЫЕ столбцы заполняются пробелами в конце для целей индексации
- ТЕКСТОВЫЕ столбцы не могут иметь значения по умолчанию
- Столбцы VARCHAR имеют только 1 байт служебных данных, если количество байтов, необходимых для текста, меньше 256. (Количество байтов, необходимых для конкретного текста, зависит от кодировки.) ТЕКСТОВЫЕ столбцы всегда имеют 2 байта служебных данных.
- Весь текст в столбцах VARCHAR учитывается при ограничении строк в 65 535 байт. Текст текстовых столбцов хранится отдельно и не учитывается в соответствии с этим ограничением.
Ответ №2:
если у вас есть какие-либо причины беспокоиться о памяти, varchar
будет выделена только используемая память. Я не уверен, как text
это делается, но я бы использовал varchar (300)
Ответ №3:
Используйте VARCHAR(300)
— если спецификация требует ограничения в 300 символов, вы не хотите поддерживать превышение этого. Мне придется откопать свой ответ, но кто-то сообщил о существенном улучшении, перенеся свои TEXT
столбцы в VARCHAR
.