VARCHARとの違いの 1 つは、列に対しては句をTEXT宣言できますが、列に対しては宣言できないことです。DEFAULTVARCHARTEXT
@Andyは、InnoDBが と の両方VARCHARをTEXT内部的に同じ方法で保存することは正しいです。
FULLTEXTインデックスは と の両方VARCHARでサポートされていますTEXT。5.6 より前では、MyISAM を使用してそのタイプのインデックスを取得する必要があります。MySQL 5.6 では、ついにFULLTEXTInnoDB でサポートされました。ただし、MyISAM での実装とは異なる結果を返すように見えるため、慎重にテストする必要があります。
ただし、Sphinx Searchは、MySQL でのいずれの実装よりも高速で豊富な機能を備えています。Full-Text Search Throwdownで私の概要を参照してください。
@モハメッドは尋ねました:
いつVARCHAR考慮されLONG VARCHARますか?文字のしきい値はありますか?
最大 255 バイトの長さを宣言すると、指定された文字列の長さを 1 バイトでエンコードできます。255 バイトを超える列の最大長を宣言すると、2 バイトを使用して長さがエンコードされます。
列を として宣言できますが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