La mayor preocupación es que nvarcharusa 2 bytes por carácter, mientras que varcharusa 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
nvarcharcolumnas 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
nvarcharcolumnas 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 nvarcharno es muy diferente, suponiendo que el software de su cliente esté diseñado para manejar Unicode. SQL Server convertirá un varchara de nvarcharforma 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 nvarchara varbinaryrendimientos 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á nchary nvarcharno ocupará más espacio que , chary varchardebido a la compresión Unicode (utilizando el algoritmo SCSU) .