ТЕКСТ против VARCHAR в InnoDB MySQL 5.5.Когда использовать каждый - PullRequest
3 голосов
/ 08 июля 2011

Каковы основные различия между текстом и varchar в движке хранения InnoDB в MySQL 5.5?

Используется ли текст или varchar (5000), если речь идет о переменном текстовом поле не более 5000 символов?

Ответы [ 3 ]

14 голосов
/ 08 июля 2011

Согласно сообщению на форуме в innodb.com

С точки зрения InnoDB varchar, текст и BLOB-объекты располагаются на диске точно так же.Если вас интересуют внутренние детали, есть разница в том, как InnoDB передает varchar и текстовые значения обратно в MySQL.В случае varchar значение передается обратно в буфер строк, тогда как в случае текста буфер строк содержит указатель на кусок памяти, содержащий фактическое значение.Но опять же, это больше похоже на детали интерфейса механизма хранения MySQL и не должно иметь никакого отношения к конечному пользователю.

Также проверьте this .

2 голосов
/ 17 мая 2014

Вообще говоря, использование TEXT было для «прикрепления» редко используемых больших данных к строке с минимальным влиянием на производительность, когда к ним нет доступа, например, вы не хотите искать / индексироватьсодержание.Это был также единственный вариант выше старого 255-байтового максимума для VARCHAR.

Однако InnoDB размыл некогда четкую границу между VARCHAR и TEXT.Три основных различия, которые я могу найти:

  1. Одно из оставшихся отличий в производительности заключается в том, что поля TEXT заставляют временные таблицы записываться на диск во время операторов SELECT.Это может привести к снижению производительности для небольших данных, но см. Этот пост , поскольку использование действительно больших VARCHAR в этом сценарии может быть хуже из-за их преобразования в фиксированный размер в хранилище MEMORY.то есть.большие VARCHARS будут заполнять буферы памяти и все еще могут попадать на диск.

  2. BLOB и TEXT столбцы не могут иметь значения DEFAULT. ссылка

  3. Индексируются только первые N символов полей TEXT. ссылка

Таким образом, хотя они действительно хранятся в одной структуре, всегда стоит сравнить весь ваше приложение, чтобы увидеть, какие другие связанные различия могут повлиять на производительность,сортировка, поиск, размер хранилища, размер пакета, резервные копии / репликация и т. д.

0 голосов
/ 08 июля 2011

Varchar хранится в таблице, но текст связан с таблицей, поэтому при использовании VARCHAR выигрыш в производительности.

для более varchar против текста - MySQL

...