usa type length data cuando campos sql sql-server database sql-server-2005

sql - type - Implicaciones de nvarchar(50) vs nvarchar(max)



sql server varchar length (3)

¿Cuáles son las diferencias generales de almacenamiento y rendimiento entre las dos tablas siguientes si su única diferencia es nvarchar(50) frente a nvarchar(max) y las cadenas en cada campo varían de 1 a 50 caracteres? Esto está en SQL Server 2005.

TABLA 1

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

TABLA 2

firstname nvarchar (max) lastname nvarchar (max) username nvarchar (max)


En primer lugar, no podrá crear índices en las columnas de longitud (máx.). Por lo tanto, si va a almacenar datos de búsqueda, es decir, si estas columnas formarán parte del predicado WHERE, es posible que no pueda mejorar el rendimiento de la consulta. Es posible que deba considerar la búsqueda de texto completo y los índices en estas columnas en ese caso.


Si tiene la garantía de tener cadenas de entre 1 y 50 caracteres, entonces la misma consulta ejecutada en cadenas de X de longitud completa se ejecutará más rápido con varchar (X) en lugar de varchar (MAX). Además, no puede crear un índice en un campo varchar (MAX).

Una vez que sus filas tengan valores de más de 8000 caracteres de longitud, entonces hay que tener en cuenta consideraciones de rendimiento adicionales (las filas se tratan básicamente como TEXTO en lugar de varchar (n)). Aunque esto no es muy relevante como comparación, ya que no hay una opción varchar (N) para cadenas de longitud superior a 8000.


nvarchar max es para columnas de hasta 2GB. Así que esencialmente toma más recursos. Es mejor utilizar el nvarchar (50) si sabe que no va a necesitar tanto espacio. cada carácter tiene aproximadamente 2 bytes, por lo que con 2 GB eso es 1 billón de caracteres ...