Разница между VARCHAR
и TEXT
заключается в том, что вы можете объявить условие DEFAULT
для столбца VARCHAR
, но не для столбца TEXT
.
@ Энди прав, что InnoDB хранит как VARCHAR
, так и TEXT
одинаково для себя.
Индексы
FULLTEXT
поддерживаются как для VARCHAR
, так и для TEXT
. До 5.6 вы должны использовать MyISAM для получения индекса этого типа. В MySQL 5.6 он наконец поддерживает FULLTEXT
в InnoDB. Хотя вы должны тщательно его протестировать, потому что возвращает результаты, отличные от , чем реализация в MyISAM.
Однако Sphinx Search работает быстрее и богаче по сравнению с любой реализацией в MySQL. См. Мой обзор в Throwdown для полнотекстового поиска .
@ Мухаммед спросил:
когда VARCHAR
станет считаться LONG VARCHAR
? Есть ли порог персонажа?
Если вы объявляете длину до 255 байт, она может закодировать длину данной строки, используя один байт. Если вы объявите максимальную длину столбца более 255 байтов, он будет использовать два байта для кодирования длины.
Вы можете объявить столбец как LONG VARCHAR
, но на самом деле это просто псевдоним для MEDIUMTEXT .
mysql> create table test ( l long varchar);
mysql> show create table test\G
CREATE TABLE `test` (
`l` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1