VARCHAR
との違いの 1 つは、列に対しては句をTEXT
宣言できますが、列に対しては宣言できないことです。DEFAULT
VARCHAR
TEXT
@Andyは、InnoDBが と の両方VARCHAR
をTEXT
内部的に同じ方法で保存することは正しいです。
FULLTEXT
インデックスは と の両方VARCHAR
でサポートされていますTEXT
。5.6 より前では、MyISAM を使用してそのタイプのインデックスを取得する必要があります。MySQL 5.6 では、ついにFULLTEXT
InnoDB でサポートされました。ただし、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