2

多くの文字列列があるデータベースがあります。NVARCHAR(MAX) を使用するか、代わりに文字列を NVARCHAR(100) などの合理的な最大値に制限する必要がありますか? 私が本当に知りたいのは、列が NVARCHAR(MAX) に設定されていて、その列のすべての値が 100 文字以下の場合、その列を NVARCHAR(100) に設定することでスペースを節約できるでしょうか?

ここでの問題はspacだけではなく、データの「検証」も重要であることは知っていますが、スペースの問題について質問しているだけです。

4

2 に答える 2

5

タイプ nvarchar(max) の列にインデックスを付けることはできないことをご存知ですか? したがって、この列でクエリを最適化することはできません。サイズへの影響はありませんが、パフォーマンスへの潜在的な影響は確かにあります。

また、特定のサイズの後、列は行の外に格納されるため、フェッチすると余分なパフォーマンス ヒットが追加されることに注意してください。

挿入時にエラーが発生することが心配な場合、一般的な解決策は次のいずれかです。

  1. クライアント側を検証する
  2. 弦を整える

これについて詳しく説明する質問があります。

于 2013-02-15T10:58:07.333 に答える
2

nvarcharフィールドのサイズはフィールド定義ではなく、入力されたデータのサイズに依存するため、スペースを節約できません。ドキュメントに従って。

ストレージ サイズ (バイト単位) は、入力されたデータの実際の長さの 2 倍 + 2 バイトです。

サイズ制限を設定する理由は、データがそのサイズ以下であることを検証するためです。これは、論理データ モデルで規定されているためです。

于 2013-02-15T10:48:24.047 に答える