Вообще говоря, использование TEXT было для «прикрепления» редко используемых больших данных к строке с минимальным влиянием на производительность, когда к ним нет доступа, например, вы не хотите искать / индексироватьсодержание.Это был также единственный вариант выше старого 255-байтового максимума для VARCHAR.
Однако InnoDB размыл некогда четкую границу между VARCHAR и TEXT.Три основных различия, которые я могу найти:
Одно из оставшихся отличий в производительности заключается в том, что поля TEXT заставляют временные таблицы записываться на диск во время операторов SELECT.Это может привести к снижению производительности для небольших данных, но см. Этот пост , поскольку использование действительно больших VARCHAR в этом сценарии может быть хуже из-за их преобразования в фиксированный размер в хранилище MEMORY.то есть.большие VARCHARS будут заполнять буферы памяти и все еще могут попадать на диск.
BLOB и TEXT столбцы не могут иметь значения DEFAULT. ссылка
Индексируются только первые N символов полей TEXT. ссылка
Таким образом, хотя они действительно хранятся в одной структуре, всегда стоит сравнить весь ваше приложение, чтобы увидеть, какие другие связанные различия могут повлиять на производительность,сортировка, поиск, размер хранилища, размер пакета, резервные копии / репликация и т. д.