Каковы основные различия между текстом и varchar в механизме хранения InnoDB в MySQL 5.5?
Используется ли text или varchar(5000), если речь идет о переменном текстовом поле не более 5000 символов?
Каковы основные различия между текстом и varchar в механизме хранения InnoDB в MySQL 5.5?
Используется ли text или varchar(5000), если речь идет о переменном текстовом поле не более 5000 символов?
Согласно сообщению на форуме в innodb.com
С точки зрения InnoDB varchar, текст и большой двоичный объект размещаются на диске точно так же. Если вас интересуют внутренние детали, есть разница в том, как InnoDB передает значения varchar и text обратно в MySQL. В случае varchar значение передается обратно в буфер строк, тогда как в случае текста буфер строк содержит указатель на фрагмент памяти, содержащий фактическое значение. Но опять же, это больше похоже на деталь интерфейса механизма хранения MySQL и не должно иметь отношения к конечному пользователю.
Также проверьте это а>.
Вообще говоря, использование TEXT заключалось в "присоединении" редко используемых больших данных к строке с минимальным влиянием на производительность, когда к ним нет доступа, например. вы не хотели бы искать/индексировать содержимое. Кроме того, это был единственный вариант, превышающий старый максимум 255 байт для VARCHAR.
Однако InnoDB размыла когда-то четкую грань между VARCHAR и TEXT. Я могу найти три основных отличия:
Еще одно различие в производительности заключается в том, что поля TEXT принудительно записывают временные таблицы на диск во время операторов SELECT. Это может привести к снижению производительности для небольших данных, но см. этот пост о том, как использование действительно больших VARCHAR в этом сценарии может быть хуже из-за их преобразования в фиксированный размер в хранилище MEMORY. т.е. большие VARCCHAR заполнят буферы памяти и могут по-прежнему записываться на диск.
Столбцы BLOB и TEXT не могут иметь значений по умолчанию. ссылка
Индексируются только первые N символов полей TEXT. ссылка
Поэтому, несмотря на то, что теперь они хранятся в одной и той же структуре, всегда стоит протестировать все ваше приложение, чтобы увидеть, какие другие связанные различия могут повлиять на производительность, сортировку, поиск, размер хранилища, размер пакета, резервное копирование/репликацию и т. д.
Varchar хранится в таблице, но текст связан с таблицей, поэтому при использовании VARCHAR повышается производительность.
подробнее varchar vs text — MySQL