回答:
SQL Server 2005以降を使用してvarchar(MAX)
いる場合は、を使用します。text
データ型が廃止されており、新規の開発作業のために使用すべきではありません。ドキュメントから:
重要
ntext
、text
、およびimage
データ型は、Microsoft SQL Serverの将来のバージョンでは削除されます。新しい開発作業でこれらのデータ型を使用することは避け、現在それらを使用しているアプリケーションの変更を計画してください。使用NVARCHAR(MAX) 、varchar型(最大)、およびvarbinary型(最大)の代わりに。
TEXT
大きな文字列データに使用されます。フィールドの長さが特定のしきい値を超えると、テキストは行外に格納されます。
VARCHAR
は常に行に格納され、8000文字の制限があります。あなたが作成しようとするとVARCHAR(x)
、どこのx> 8000、エラーが発生します:
サーバー:メッセージ131、レベル15、状態3、行1
タイプ 'varchar'に指定されたサイズ()は、すべてのデータタイプで許可されている最大値(8000)を超えています
これらの長さの制限は心配しないVARCHAR(MAX)
でSQL Server 2005のと同じように、行外に格納することができます、TEXT
。
注MAX
ここでは、一定の種類のものです、VARCHAR
そしてVARCHAR(MAX)
、後者は非常に近くに非常に異なるタイプがありますTEXT
。
以前のバージョンのSQL Serverでは、TEXT
直接にアクセスできず、を取得TEXTPTR
しREADTEXT
てWRITETEXT
関数内でのみ使用できました。
でSQL Server 2005のことができます直接アクセスTEXT
列(あなたはまだして明示的なキャストが必要なもののVARCHAR
、彼らのために値を代入します)。
TEXT
いいね:
VARCHAR
いいね:
選択ここで私は、列の値を返す任意のクエリを発行することを意味します。
検索ここで私は、その結果の値に依存して任意のクエリの発行を意味するTEXT
か、VARCHAR
列を。これには、任意のJOIN
or WHERE
条件での使用が含まれます。
ようにTEXT
行の外格納され、関与しないクエリTEXT
の列は、通常より高速です。
何TEXT
が良いのかの例:
何VARCHAR
が良いのかの例:
経験則として、あなたは今まで超えることがあなたにテキスト値が必要な場合は、200個の文字をと、この列に加わる使用は使用しないでくださいTEXT
。
それ以外の場合はを使用しますVARCHAR
。
PS同じことがUNICODE
有効NTEXT
にさNVARCHAR
れている場合にも当てはまります。上記の例で使用する必要があります。
PPS同じことが適用されるにVARCHAR(MAX)
してNVARCHAR(MAX)
いることをSQL Serverの2005+の使用の代わりに、TEXT
とNTEXT
。それらを常に行外に格納する場合はlarge value types out of row
、それらを有効にする必要がありますsp_tableoption
。
上記とここで述べたように、TEXT
は将来のリリースで廃止される予定です。
この
text in row
オプションは、SQL Serverの将来のバージョンでは削除される予定です。新しい開発作業ではこのオプションの使用を避け、現在を使用しているアプリケーションの変更を計画してくださいtext in row
。、、またはデータタイプを使用してvarchar(max)
、大きなデータを保存することをお勧めします。これらのデータ型の行内および行外の動作を制御するには、オプションを使用します。nvarchar(max)
varbinary(max)
large value types out of row
SQLサーバー2005の新しいデータ型が導入されました。varchar(max)
そしてnvarchar(max)
彼らは、古いテキスト型の利点を持っている:彼らはデータの2ギガバイトにOPを含めることができますが、彼らはまたの利点のほとんどを持っているvarchar
とnvarchar
。これらの利点の中には、substring()などの文字列操作関数を使用する機能があります。
また、サイズが8KB未満の場合、varchar(max)はテーブルの(ディスク/メモリ)スペースに格納されます。フィールドにさらにデータを配置した場合にのみ、データはテーブルのスペースの外に格納されます。テーブルのスペースに格納されているデータは、(通常)より速く取得されます。
簡単に言うと、(n)varchar(max)というより良い代替手段があるため、Textは使用しないでください。また、通常のvarcharが十分に大きくない場合、つまり、格納する文字列が8000文字を超えることが予想される場合にのみ、varchar(max)を使用してください。
前述のように、TEXTデータ型でSUBSTRINGを使用できますが、TEXTフィールドに含まれる文字数が8000文字未満である場合に限ります。
2008年のmsにはいくつかの大きな変更がありました->使用するデータ型を決定するときは、次の記事を検討する価値があります。 http://msdn.microsoft.com/en-us/library/ms143432.aspx
あたりのバイト数