以下の2つのテーブルの唯一の違いがnvarchar(50)
とnvarchar(max)
であり、各フィールドの文字列が1〜50文字の範囲である場合、一般的なストレージとパフォーマンスの違いは何ですか?これはSQL Server 2005に含まれています。
表1
firstname nvarchar (50)
lastname nvarchar (50)
username nvarchar (50)
表2
firstname nvarchar (max)
lastname nvarchar (max)
username nvarchar (max)
1〜50文字の文字列があることが保証されている場合、最大長Xの文字列に対して実行される同じクエリは、varchar(X)とvarchar(MAX)を使用するとより高速に実行されます。さらに、varchar(MAX)フィールドにインデックスを作成することはできません。
行の長さが8000文字を超えると、競合するパフォーマンスに関する追加の考慮事項があります(行は基本的にvarchar(n)ではなくTEXTとして扱われます)。ただし、長さが8000を超える文字列にはvarchar(N)オプションがないため、これは比較としてそれほど重要ではありません。
何よりもまず、(最大)長さの列にインデックスを作成することはできません。したがって、検索可能なデータを格納する場合、つまりこれらの列がWHERE述語の一部になる場合は、クエリのパフォーマンスを向上させることができない場合があります。このような場合は、これらの列の全文検索とインデックスを検討する必要があります。