TEXT
およびVarChar(MAX)
非Unicodeの大きな可変長文字データ型で、最大2147483647非Unicode文字を格納できます(つまり、最大ストレージ容量は2GBです)。
MSDNリンクのとおり、MicrosoftはTextデータ型の使用を避けることを提案しており、SQL Serverの将来のバージョンでは削除される予定です。Varchar(Max)は、テキストデータ型ではなく、大きな文字列値を格納するための推奨データ型です。
Text
タイプ列のデータは、行外の別のLOBデータページに格納されます。テーブルデータページの行には、実際のデータが存在するLOBデータページへの16バイトポインターしかありません。一方、Varchar(max)
タイプ列のデータは、8000バイト以下の場合、行内に格納されます。Varchar(max)列の値が8000バイトを超える場合、Varchar(max)列の値は個別のLOBデータページに格納され、行には実際のデータが存在するLOBデータページへの16バイトポインターしかありません。したがって、In-Row
Varchar(Max)は検索と取得に適しています。
一部の文字列関数、演算子、または構造は、テキストタイプの列では機能しませんが、VarChar(Max)タイプの列では機能します。
=
VarChar(Max)タイプの列の演算子と等しい
VarChar(Max)タイプの列の句でグループ化
VarChar(Max)タイプの列の値は、格納される値の長さが8000バイトを超えるか、行に十分なスペースがない場合にのみ行外に格納されることがわかっているため、そうでない場合は格納されます。それは列にあります。したがって、VarChar(Max)列に格納されている値のほとんどが大きく、行外に格納されている場合、データ取得の動作は、テキストタイプの列の場合とほぼ同じになります。
ただし、VarChar(Max)型の列に格納されている値のほとんどが行内に格納できるほど小さい場合。次に、LOB列が含まれていないデータを取得するには、LOB列の値が非LOB列の値が格納されているのと同じデータページの行に格納されるため、より多くのデータページを読み取る必要があります。ただし、選択クエリにLOB列が含まれている場合は、テキストタイプの列と比較して、データの取得に必要なページ数が少なくて済みます。
結論
パフォーマンスを向上させるためVarChar(MAX)
ではなく、データ型を使用してくださいTEXT
。
ソース