2009-08-04 20 views
3

NVARCHAR(MAX)は良いデータ型です。長さが1〜50文字の短いUnicode文字列を格納したいのですが、そのほとんど(90%以上)は5です-10文字の長さですか?短い文字列のNVARCHAR(MAX)

比較や並べ替えのクエリでは、この列は使用されません。インクルードされた列としてインデックスに追加される可能性があります。予想される行数 - 10M以上

推奨事項前もって感謝します!

答えて

6

なぜこのような短い文字列にnvarchar(MAX)を使用しますか?最大長が50文字であることがわかっている場合は、nvarchar(50)にします。

また、nvarchar(MAX)列が900バイトの制限を破るため、インデックスに含めることはできません。

+0

ほとんどの文字列が5-10文字の長さであれば、ほとんどの場合NVARCHAR(50)はスペースを無駄にするため、NVARCHAR(MAX)を検討しています。私は正しい? –

+6

あなたはMAXの長さ指定子を誤解していると思います。これは、文字列の実際の長さだけを格納するようDBに指示するものではありません。代わりに、DBに、最大文字数を格納できるようにすることができます(2ギグと思います)。 nvarchar(およびvarchar)データ型は、実際にはそのフィールドのデータの実際の文字列長のみを格納します。 nvarchar(50)は、データを最大50文字まで格納できることを示していますが、これ以上は使用できません。ただし、50未満の場合は、スペースを無駄にすることはありません。 – NYSystemsAnalyst

+1

いいえ必要なスペースのみを使用します。 NVARCHAR(50)であっても、5文字しか使用されない場合、記憶容量要件は10バイトです。 (NVARCHARは文字あたり2バイトを使用します) – beach

1

Iは、最大長さが実際に(私はSQL Serverの以前のバージョンでNTEXTと同じであると考えて)50

1

NVARCHAR(MAX)である場合NVARCHAR(50)がより適切であることを示唆しています可変長であり、潜在的に無制限の長さのテキスト値を格納するためのものです。

値がN文字を超えないことがわかっている場合は、NVARCHAR(N)を使用する必要があります。

関連する問題