У меня нет личного опыта, но у этого парня есть:
VARCHAR vs. TEXT - некоторые показатели производительности
Быстрый ответ: varchar был немного быстрее.
Редактировать - нет, это не так. Он индексировал их по-другому - у него был полный индекс по varchar (255 символов), но по тексту был индекс с префиксом 255 символов. Когда он удалил это, они выполнили более или менее то же самое.
Позже в теме есть интересная новость:
Когда таблица tmp необходима для
SELECT, первый выбор заключается в использовании
ПАМЯТЬ, которая будет только RAM, следовательно
наверное заметно быстрее. (Второй
выбор - MyISAM.) Однако ТЕКСТ и
BLOB не допускаются в ПАМЯТЬ, поэтому
не могу использовать это. (Есть и другие причины
почему это может пропустить ПАМЯТЬ.)
Редактировать 2 - некоторая более актуальная информация, на этот раз сравнивая, как различные индексы работают с различными типами.
MyISAM помещает ТЕКСТ и BLOB «в строку». Если
вы ищете таблицу (диапазон сканирования
/ таблица сканирования), вы переступаете
коровье поле - дорого за диск
I / O. То есть существование
встроенная капля вредит производительности в этом
случай.
InnoDB помещает только 767 байтов ТЕКСТА
или BLOB-инлайн, остальное уходит в
какой-то другой блок. Это компромисс
это иногда помогает, иногда болит
производительность.
Что-то еще (Мария? Сокол? InnoDB
плагин?) полностью помещает тексты и BLOB
в другом месте. Это сделало бы
заметная разница в производительности
по сравнению с VARCHAR. Иногда
Текст будет быстрее (например, сканирование диапазона
который не нуждается в блобе);
иногда VARCHAR будет быстрее
(например, если вам нужно посмотреть на это и / или
вернуть его).