2013-11-26 266 views
13

nvarchar(50)nvarchar(max)の唯一の違いがあり、各フィールドの文字列の範囲が1〜50文字の場合、次の表の一般的な記憶域とパフォーマンスの違いは何ですか?これは、2005年nvarchar(50)とnvarchar(max)の関係

SQL Serverで表1

firstname nvarchar (50) 
lastname nvarchar (50) 
username nvarchar (50) 

firstname nvarchar (max) 
lastname nvarchar (max) 
username nvarchar (max) 
+3

この[記事](http://rusanu.com/2010/03/22/performance-comparison-of-varcharmax-vs-varcharn/)をお読みください。 –

+0

別の比較:http://sqlhints.com/2013/03/10/difference-between-sql-server-varchar-and-varcharmax-data-type/ – NoChance

+0

@EmmadKareemその記事では、varchar(8ビットコードページ)、私の質問はnvarchar(ユニコード互換) –

答えて

22

1から50文字の文字列を使用することが保証されている場合は、長さがXの文字列間で同じクエリが実行されますvarchar(X)とvarchar(MAX)を使用する方が高速です。また、varchar(MAX)フィールドにインデックスを作成することはできません。

行の長さが8000文字を超えると、競合する追加のパフォーマンス上の考慮事項があります(行は基本的にvarchar(n)ではなくTEXTとして扱われます)。これは、8000を超える長さの文字列にはvarchar(N)オプションがないため、比較としてはあまり重要ではありません。

+1

+1です。 –

-3

NVARCHAR maxは最大2GBの列にあるテーブルです。したがって本質的にそれはより多くのリソースを消費します。あなたは、多くのスペースを必要としないことが分かっている場合は、nvarchar(50)を使用する方が良いです。各文字は約2バイトなので、2GBは10億文字です...

+1

あなたはncarcharとncharについて誤解していると思います!詳細な説明は –

5

最初に、(最大)長さの列にインデックスを作成することはできません。したがって、検索可能なデータ(つまり、これらの列がWHERE述部の一部になる場合)を保管すると、照会のパフォーマンスを向上させることができない場合があります。このような場合、フルテキスト検索とこれらの列の索引を考慮する必要があります。

+0

これは良いスタートです。他にも、nvarchar(n)とnvarchar(max)の間で誰かが考慮する必要があると考えることができますか? –

関連する問題