2011-01-21 16 views
6

Nvarchar se utiliza para almacenar datos Unicode que se utilizan para almacenar datos multilingües. Si no termina almacenando Unicode, ¿ocupará el mismo espacio?¿El nvarchar siempre ocupa el doble de espacio que varchar?

+1

creo que independet de la los caracteres almacenados solo se utilizará un tipo de codificación, por lo que ocupará espacio de los caracteres unicode independientemente de los caracteres almacenados – John

Respuesta

6

SÍ.

Ver MSDN Books Online on NCHAR and NVARCHAR.

NCHAR:

El tamaño de almacenamiento es dos veces n bytes.

NVARCHAR

El tamaño de almacenamiento, en bytes, es dos veces el número de caracteres entró + 2 bytes

+0

¿Alguna idea de cómo la compresión de filas/páginas afecta esto? 'select cast (N'This es una prueba 'como varbinary (20))' da '0x5400680069007300200069007300200061002000'. En principio, hubiera pensado que esos ceros podrían comprimir bastante bien. –

1

Tipo de. No todos los caracteres Unicode usan dos bytes. Utf-8, por ejemplo, sigue siendo solo un byte por carácter la mayor parte del tiempo, pero rara vez puede necesitar 4 bytes por carácter. Lo que hará nvarchar es asignar dos bytes por carácter.

+1

columnas n (var) char usan UCS-2, que es una codificación de ancho fijo de 16 bits. Siempre usará exactamente dos bytes por carácter, incluso si uno de esos bytes es todo ceros. – JLRishe

Cuestiones relacionadas