2011-06-26 13 views
9

Entiendo que juntar en nvarchar es más lento porque el índice es más grande que nvarchar usando 2 bytes para cada carácter pero int es de 4 bytes todo el tiempo. ¿Es significativa la diferencia de rendimiento de la combinación? ¿Hay alguna razón importante para evitar unirse a nvarchar? No pude encontrar ningún artículo de MSDN sobre el tema.Qué tan significativa es la diferencia de rendimiento cuando se une en nvarchar versus int

+0

Espero que la diferencia de rendimiento sea insignificante, pero realmente debería probarla para su caso específico. – Sjoerd

+2

@Sjoerd: más de unas pocas filas, sí. De lo contrario, * será * enorme – gbn

Respuesta

11

Al menos 8x CPU. Este es el aumento mensurable en la comparación de nvarchar sobre varchar: las reglas de clasificación y comparación unicode son más complejas que varchar.

Así, suponiendo varchar y int son iguales (no lo son) nvarchar se han comparado cabeza a int

Entonces, byte a byte ('1234 'vs 1234) está comparando 10 bytes frente a 4 bytes. Esto también significa una clave más amplia para menos entradas de índice y datos por página = más IO.

Finalmente, si su nvarchar tiene más de 450 caracteres, no puede indexarlo porque la clave de índice tiene un ancho máximo de 900 bytes.

Cuestiones relacionadas