En büyük endişe, nvarcharkarakter başına 2 bayt, oysa 1 varcharkullanır. Bu nedenle, * ile nvarchar(4000)aynı miktarda depolama alanı kullanır varchar(8000).
İki kat fazla depolama alanına ihtiyaç duyan tüm karakter verilerinize ek olarak, bu ayrıca:
nvarcharSatırları 8060 bayt satır sınırı / 8000 bayt karakter sütun sınırı içinde tutmak için daha kısa sütunlar kullanmanız gerekebilir .
nvarchar(max)Sütun kullanıyorsanız , satırdan daha erken bir şekilde kullanılmazlar varchar(max).
nvarchar900 baytlık dizin anahtarı sınırı içinde kalmak için daha kısa sütunlar kullanmanız gerekebilir (neden bu kadar büyük bir dizin anahtarı kullanmak isteyeceğinizi bilmiyorum, ama asla bilmiyorsunuz).
Bunun yanında, nvarcharistemci yazılımınızın Unicode ile çalışmak üzere oluşturulduğunu varsayarak çalışmak çok da farklı değil. SQL Server şeffaf bir varcharşekilde bir a çevirir nvarchar, bu nedenle değişmezde 2 baytlık (yani Unicode) karakterleri kullanmıyorsanız, dize değişmezleri için N önekine kesinlikle ihtiyacınız yoktur. Döküm unutmayın nvarchariçin varbinaryaynı yapmaktan daha verim farklı sonuçlar varchar. Önemli olan nokta, uygulamanın çalışmasını sağlamak için sürecin kolaylaştırılmasına yardımcı olan her varchar kelimesini hemen bir nvarchar literaline değiştirmek zorunda kalmayacağınızdır.
Veri sıkıştırma kullanırsanız * (hafif satır sıkıştırma yeterlidir, Enterprise Edition gerekli SQL Server 2016 SP1 önce genellikle bulacaksınız) ncharve nvarchardaha fazla yer kaplar charve varcharnedeniyle, (SCSU algoritmasını kullanarak) Unicode sıkıştırma .