TEXT
大きな文字列データに使用されます。フィールドの長さが特定のしきい値を超えた場合、テキストは行外に格納されます。
VARCHAR
常に行に格納され、 8000の制限があります 文字。 VARCHAR(x)
を作成しようとした場合 、ここで x> 8000 、エラーが発生します:
サーバー:メッセージ131、レベル15、状態3、行1
タイプ「varchar」に指定されたサイズ()は、任意のデータタイプで許可されている最大値(8000)を超えています
これらの長さの制限は、VARCHAR(MAX)
には関係ありません。 SQL Server 2005 、TEXT
のように、行外に格納される場合があります 。
MAX
に注意してください ここでは一種の定数ではありません、VARCHAR
およびVARCHAR(MAX)
非常に異なるタイプであり、後者はTEXT
に非常に近いです 。
以前のバージョンのSQLServer TEXT
にアクセスできませんでした 直接、TEXTPTR
しか取得できませんでした READTEXT
で使用します およびWRITETEXT
関数。
SQL Server 2005 TEXT
に直接アクセスできます 列(ただし、VARCHAR
への明示的なキャストが必要です。 それらに値を割り当てるため)。
TEXT
良いです:
- データベースに大きなテキストを保存する必要がある場合
- 列の値を検索しない場合
- この列をめったに選択せず、参加しない場合。
VARCHAR
良いです:
- 小さな文字列を保存する場合
- 文字列値で検索する場合
- 常に選択するか、結合で使用する場合。
選択 ここでは、列の値を返すクエリを発行することを意味します。
検索 ここでは、結果がTEXT
の値に依存するクエリを発行することを意味します またはVARCHAR
桁。これには、任意のJOIN
での使用が含まれます またはWHERE
状態。
TEXT
として TEXT
を含まないクエリは行外に格納されます 通常、列の方が高速です。
TEXT
の例 に適しています:
- ブログのコメント
- Wikiページ
- コードソース
VARCHAR
の例 に適しています:
- ユーザー名
- ページタイトル
- ファイル名
経験則として、テキスト値が 200を超える必要がある場合 文字および この列では結合を使用せず、TEXT
を使用してください 。
それ以外の場合は、VARCHAR
を使用します 。
P.S. 同じことがUNICODE
にも当てはまります 有効なNTEXT
およびNVARCHAR
上記の例にも使用する必要があります。
P.P.S。 同じことがVARCHAR(MAX)
にも当てはまります およびNVARCHAR(MAX)
そのSQLServer 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
を使用します オプション。