48

重複の可能性:
MySQL: 大きな VARCHAR と TEXT?

VARCHAR現在は 65k バイトを使用できるため、いつ ? の代わりに使用する必要がTEXTありVARCHARますか?

4

2 に答える 2

64

longは の/フィールドVARCHARと同じ方法で格納されます。TEXTBLOBInnoDB

ストレージの将来の BLOB から、TEXT と long VARCHAR は、Innodb によって同じ方法で処理されます。これが、Innodb マニュアルが BLOB ではなく「長い列」と呼ぶ理由です。

ソース

これらの列にインデックスを付ける必要がない限り (その場合ははるかに高速です)、長いフィールドにoverVARCHARを使用する理由はありません。長さに応じてデータ取得を調整するためのエンジン固有の最適化がいくつかあり、正しい列タイプを使用する必要があります。これらを活用するために。VARCHARTEXTMySQL

MyISAMこのトピックに関する詳細なディスカッションを使用している場合は、こちらを参照してください。


TEXT実際のストレージの場所へBLOBのポインタを持つだけのテーブルで、テーブルから離れて格納されます。

VARCHARテーブルとインラインで格納されます。VARCHARサイズが適切な場合は高速です。

このテストによると、VARCHARはテキストの約 3 倍の速さです。

于 2012-07-11T22:26:06.627 に答える
4

テキストは、不確定な長さの非常に長い文字列に使用する必要があります。また、TEXT フィールドを返すクエリは、対応する VARCHAR よりもはるかに遅くなる傾向があります。

于 2012-07-11T21:34:08.557 に答える