A maior preocupação é que nvarchar
use 2 bytes por caractere, enquanto varchar
usa 1. Portanto, nvarchar(4000)
usa a mesma quantidade de espaço de armazenamento que varchar(8000)
*.
Além de todos os dados de seu personagem precisarem do dobro do espaço de armazenamento, isso também significa:
- Pode ser necessário usar
nvarchar
colunas mais curtas para manter as linhas dentro do limite da linha de 8060 bytes / 8000 caracteres.
- Se você estiver usando
nvarchar(max)
colunas, elas serão enviadas para fora da linha mais cedo do que o varchar(max)
faria.
- Pode ser necessário usar
nvarchar
colunas mais curtas para permanecer dentro do limite da chave de índice de 900 bytes (não sei por que você desejaria usar uma chave de índice tão grande, mas nunca sabe).
Além disso, trabalhar com nvarchar
não é muito diferente, supondo que o software do cliente seja construído para lidar com Unicode. O SQL Server converterá de forma transparente um up varchar
para nvarchar
, para que você não precise estritamente do prefixo N para literais de string, a menos que esteja usando caracteres de 2 bytes (ou seja, Unicode) no literal. Esteja ciente de que a conversão nvarchar
para varbinary
produzir resultados diferentes do que fazer o mesmo com varchar
. O ponto importante é que você não precisará alterar imediatamente todo literal varchar para um literal nvarchar para manter o aplicativo funcionando, o que ajuda a facilitar o processo.
* Se você usar a compactação de dados (a compactação leve de linha é suficiente, é necessário o Enterprise Edition antes do SQL Server 2016 SP1 ), normalmente você encontrará nchar
e nvarchar
não ocupará mais espaço do que char
e varchar
, devido à compactação Unicode (usando o algoritmo SCSU) .