La mayor preocupación es que nvarchar
usa 2 bytes por carácter, mientras que varchar
usa 1. Por lo tanto, nvarchar(4000)
usa la misma cantidad de espacio de almacenamiento que varchar(8000)
*.
Además de todos los datos de tus personajes que necesitan el doble de espacio de almacenamiento, esto también significa:
- Puede que tenga que usar
nvarchar
columnas más cortas para mantener las filas dentro del límite de la fila de 8060 bytes / límite de columna de caracteres de 8000 bytes.
- Si está utilizando
nvarchar(max)
columnas, se eliminarán de la fila antes de varchar(max)
lo que lo haría.
- Es posible que tenga que usar
nvarchar
columnas más cortas para mantenerse dentro del límite de clave de índice de 900 bytes (no sé por qué querría utilizar una clave de índice tan grande, pero nunca se sabe).
Además de eso, trabajar con nvarchar
no es muy diferente, suponiendo que el software de su cliente esté diseñado para manejar Unicode. SQL Server convertirá un varchar
a de nvarchar
forma transparente , por lo que no necesita estrictamente el prefijo N para los literales de cadena a menos que esté usando caracteres de 2 bytes (es decir, Unicode) en el literal. Tenga en cuenta que la fundición nvarchar
a varbinary
rendimientos resultados diferentes haciendo lo mismo con varchar
. El punto importante es que no tendrá que cambiar inmediatamente cada literal varchar a un literal nvarchar para que la aplicación funcione, lo que ayuda a facilitar el proceso.
* Si utiliza la compresión de datos (la compresión de fila ligera es suficiente, se requiere Enterprise Edition antes de SQL Server 2016 SP1 ), generalmente encontrará nchar
y nvarchar
no ocupará más espacio que , char
y varchar
debido a la compresión Unicode (utilizando el algoritmo SCSU) .