SQLサーバーテキストタイプvsvarcharデータタイプ[定休日]
-
05-09-2019 - |
質問
い可変長の文字データを格納したい、まさにSQLサーバー(2005年)データベースです。を勉強したいのか良い方法を選択テキストのSQL型を選んでVARCHAR SQLの型には、是非、パフォーマンス/プします。
解決
使用している場合は、SQL Server2005年以降、利用 varchar(MAX)
.の text
datatypeは推奨されて用いるべきではありませんの新規開発です。から のドキュメント:
重要
ntext
,text
, は、image
データタイプを撤去することは、将来のバージョンのMicrosoft SQLサーバーです。の利用を避けるこれらのデータタイプを新しい開発プランを変更する用途で現在使用します。使用 nvarchar(max), varchar(max), は、 varbinary(max) です。
他のヒント
TEXT
は大文字列データです。の長さの分野exceeedある閾値は、テキストが格納され出ます。
VARCHAR
常に格納される行が限定され 8000 文字です。っている場合を VARCHAR(x)
, では、 x>8000, なのに、エラー:
サーバー:Msg131、15、3線の1
サイズ()されたタイプ'varchar'上限を超えて許可されるデータタイプ(8000)
これらの長さに制限はな懸念 VARCHAR(MAX)
に SQL Server2005年, は、格納されることがあり行列のように、 TEXT
.
ご注意 MAX
のものではない定数ここで、 VARCHAR
や VARCHAR(MAX)
非常に異なる種類のも TEXT
.
以前のバージョン SQLサーバー アクセスできないの TEXT
直接、ごみを出することができる方 TEXTPTR
利用で READTEXT
や WRITETEXT
ます。
に SQL Server2005年 直接手に取ることができ TEXT
カラムもまだ明確なキャスト VARCHAR
を割り当てる値です。
TEXT
は:
- が必要な場合は大文字データベース
- ない場合は検索のカラムの値
- を選択する場合はこの欄に人は少ないで参加できます。
VARCHAR
は:
- ご使用にならないときは少し文字列
- お探しの場合は、文字列値
- 場所を選んで使用することはできるが仲間入り。
による 選択 ここで行なわれるの値を返します。
による 検索 ここで行なわその結果により価値の TEXT
または VARCHAR
カラムです。これを利用で JOIN
または WHERE
ます。
としての TEXT
保存の列をクエリーながっている。 TEXT
カラムは高速に行います。
例え TEXT
が適しているかについて
- ブログのコメント
- Wikiページ
- コードソース
例え VARCHAR
が適しているかについて
- ユーザ名
- ページタイトル
- ファイル名
経験則として、た場合、あるいテキスト値を超えるもの 200 文字 や 使用しないで参加できるこのカラムを使用 TEXT
.
その利用 VARCHAR
.
P.S. 同じように UNICODE
有効な NTEXT
や NVARCHAR
ものを使用できる例です。
P.S.P. 同じように VARCHAR(MAX)
や NVARCHAR(MAX)
その SQL Server2005+ 利用で TEXT
や NTEXT
.ま能を有効にする必要があり large value types out of row
かれていますので、そちらを sp_tableoption
したい場合はそれを常に保存されますのです。
上記のと こちらの, TEXT
は推奨されていませんが将来のリリース:
の
text in row
オプションを撤去することは、将来のバージョンの SQLサーバー.の使用は避けこのオプションで新しい開発プランを変更する用途で現在使用text in row
.お店では大量のデータを利用varchar(max)
,nvarchar(max)
, やvarbinary(max)
データの種類です。制御-行されているかのように行動これらのデータ型を使用large value types out of row
オプションです。
SQL Serverで2005の新しいデータ型:varchar(max)
とnvarchar(max)
彼らはデータの2ギガバイトにOPを含めることができますが、彼らはまた、varchar
とnvarchar
の利点のほとんどを持っている:彼らは古いテキスト型の利点を持っています。これらの利点の中には、サブストリングとして文字列操作関数を使用する能力である()。
また、VARCHAR(max)は、テーブルの(ディスク/メモリ)空間に格納されます。あなたはフィールドでより多くのデータを配置する場合にのみ、そのテーブルのスペースの外に格納されています。テーブルのスペースに格納されたデータは、(通常は)早く取得されます。
(n)はvarchar型(最大):より良い代替手段があるとして要するに、テキストを使用することはありません。定期的にvarchar型が十分でないときにのみ、つまり、あなたが期待する場合は、保存しようとしているtehの文字列が8000個の文字を超えます、varchar型(max)を使用します。
指摘されたとおり、は、あなたがTEXTデータ型でSUBSTRINGを使用することができますが、唯一の限り、テキストフィールドが8000の未満の文字が含まれています。
あの大きな変更ms2008->が検討された場合は下記を決定はどのようなデータ型を利用します。http://msdn.microsoft.com/en-us/library/ms143432.aspx
バイト/
- varchar(max)は、varbinary(max)、xml、テキスト、画像列2^31-1 2^31-1
- nvarchar(max)カラム2^30-1 2^30-1