TEXT
とVarChar(MAX)
は2147483647非Unicode文字(すなわち、最大の記憶容量である:2GB)の最大値を格納することができる非ユニコード大可変長文字データ型です。
は、テキストデータ型の使用を避けるために示唆されており、それは、SQL Serverの将来のバージョンで削除されます。 Varchar(Max)は、テキストデータ型の代わりに大きな文字列値を格納するために推奨されるデータ型です。
- において、行またはアウトオブ行ストレージ
Text
型カラムの
データは、別個のLOBデータ・ページ内のアウト行格納されています。表データ・ページの行には、実際のデータが存在するLOBデータ・ページへの16バイトのポインターしかありません。一方、Varchar(max)
タイプのデータは、8000バイト以下の場合は行内に格納されます。 Varchar(max)列の値が8000バイトを超える場合、Varchar(max)列の値は別のLOBデータ・ページに格納され、行には実際のデータが存在するLOBデータ・ページへの16バイトのポインタのみが格納されます。だからIn-Row
Varchar(Max)は検索と検索に適しています。
文字列関数、演算子またはテキスト型の列では動作しませんコンストラクトのいくつかを、彼らはVARCHAR(最大)上で動作しない列を入力します。 VARCHAR(最大)に等しい演算子
=
VARCHAR(最大)の句を入力列ごとに
グループを入力し
VarChar(Max)型の列の値は次のとおりです。格納される値の長さが8000バイトより大きい場合、または行に十分なスペースがない場合にのみ行外に格納されます。それ以外の場合は、行内に格納されます。したがって、VarChar(Max)列に格納されている値の大部分が大きく、行外に格納されている場合、データ取得動作はText型列の動作とほぼ同じです。
しかし、VarChar(最大)型の列に格納されている値の大部分が、行内に格納できるほど小さい場合は、 LOB列が含まれていないデータを取り出すには、非LOB列の値が格納されている同じデータ・ページにLOB列の値が格納されているため、読み取るデータ・ページの数を増やす必要があります。ただし、選択クエリにLOB列が含まれている場合は、テキスト型の列と比較してデータの取得に必要なページ数が少なくて済みます。
結論
使用VarChar(MAX)
データ型ではなく、良好なパフォーマンスを得るためTEXT
。
Source
この投稿も便利です。http://stackoverflow.com/questions/564755/sql-server-text-type-vs-varchar-data-type – Jake
その記事の中で最も重要な言及があります'TEXT'と' NTEXT'(と 'IMAGE')が廃止されていることを示す[MSDN documentation](http://msdn.microsoft.com/en-us/library/ms187993.aspx)へのリンクです。 – Brian
リンクを見てください:http://stackoverflow.com/q/28980502/1805776 – vicky