2013-11-26 16 views
13

Tek farklar nvarchar(50) vs nvarchar(max) ve her alandaki dizeler 1 ile 50 karakter arasındaysa, aşağıdaki iki tablo arasındaki genel depolama ve performans farkları nelerdir? Bu 2005.nvarchar (50) vs nvarchar (max) 'nin etkileri

SQL Server TABLO 1

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

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

Lütfen bu makaleyi okuyunuz (http://rusanu.com/2010/03/22/performance-comparison-of-varcharmax-vs-varcharn/). –

+0

Başka bir karşılaştırma: http://sqlhints.com/2013/03/10/difference-between-sql-server-varchar-and-varcharmax-data-type/ – NoChance

+0

@EmmadKareem bu makalede varchar (8 bit kod sayfaları) anlatılmaktadır, benim sorum nvarchar (unicode uyumlu) ile ilgilidir –

cevap

22

1 ile 50 karakter arasında bir dizeye sahip olmanın garantili olması durumunda, aynı sorguyu X'e kadar olan uzunluklarda çalıştırırsınız. varchar (X) ile varchar (MAX) kullanarak daha hızlı. Ayrıca, varchar (MAX) alanında bir dizin oluşturamazsınız.

Satırlarınız 8000 karakter uzunluğunda bir değere sahip olduğunda, bununla ilgili ek performans konuları vardır (satırlar temel olarak varchar (n) yerine METİN olarak kabul edilir). Bu, 8000 üzerinde uzunluk dizeleri için varchar (N) seçeneği olmadığından bir karşılaştırma olarak önemli olmasa da.

+1

+1. –

-3

nvarchar maksimum 2 GB sütun için TABLE'dır. Yani aslında daha fazla kaynak gerektirir. Bu kadar alana ihtiyaç duymayacağınızı biliyorsanız, nvarchar'ı (50) kullanmanız daha iyi olur. her karakter 2 byte 2 bys bu yüzden 1 milyar karakter ...

+1

Ncarchar ve nchar hakkında yanlış anlaşıldığını düşünüyorum! Detaylı açıklama için –

5

Her şeyden önce, (en) uzunluk sütunlarında dizin oluşturamayacaksınız. . Eğer aranabilir bir veriyi depolarsanız, yani., Eğer bu sütunlar WHERE yükleminin bir parçası olacaksa, sorgu performansını geliştiremeyebilirsiniz. Böyle bir durumda FullText Arama ve bu sütunlardaki dizinleri dikkate almanız gerekebilir.

+0

Bu iyi bir başlangıç. Nvarchar (n) ve nvarchar (max) arasında karar verirken birinin düşünmesi gereken başka bir şey var mı? –

İlgili konular