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
9
A
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.
- What are the main performance differences between varchar and nvarchar SQL Server data types?
- SQL Server uses high CPU when searching inside nvarchar strings
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
- 1. nvarchar (max) versus NText
- 2. Sql Server int vs comparación nvarchar en el rendimiento?
- 3. SQL se une a una sola tabla: ¿diferencia de rendimiento?
- 4. ¿Cuál es la diferencia entre la izquierda se une y derecha se une en MySQL
- 5. nchar vs nvarchar rendimiento
- 6. ¿Cuál es la diferencia (cuando se aplica a mi código) entre INT (10) e INT (12)?
- 7. Math.random() versus Random.nextInt (int)
- 8. Rendimiento: XDocument versus XmlDocument
- 9. HttpWebRequest introduce latencia significativa cuando la cabecera Expect100Continue se desactiva
- 10. ¿Por qué se recomienda jQuery.ready cuando es tan lento?
- 11. ¿Qué tan significativo es el factor de rendimiento del bazar?
- 12. Rendimiento SQL: ¿Hay algún golpe de rendimiento usando NVarchar (MAX) en lugar de NVarChar (200)
- 13. Rendimiento C++, para versus while
- 14. ¿Qué tan eficaz es StackFrame?
- 15. ¿Cuál es la diferencia entre "usar" y "activar" en la tabla se une en MysQL?
- 16. Entity Framework + MySQL - ¿Por qué el rendimiento es tan terrible?
- 17. SQL se une a las subconsultas de SQL (rendimiento)?
- 18. ¿Qué tan confiable es current_kernel_time()?
- 19. ¿Cuál es la diferencia entre 'int'? y 'int' en C#?
- 20. Indicando la diferencia estadísticamente significativa en el gráfico de barras
- 21. En cuanto a rendimiento, ¿qué tan buena es la biblioteca de guayaba?
- 22. ¿Cuál es la diferencia cuando escribo Func1 (int & a) y Func1 (int * a)
- 23. ¿Cuál es la diferencia en contactos versus contactos sin formato?
- 24. ¿Qué tan caro es .getClass() en Java?
- 25. ¿Qué se une con SQLite?
- 26. ¿Alguna mejora significativa en el rendimiento al usar operadores bit a bit en lugar de simples sumas int en C#?
- 27. ¿Por qué el código EF4 primero es tan lento cuando se almacenan objetos?
- 28. ¿Cuál es la diferencia entre int [] [] e int [,]?
- 29. se une a ints vs une en chars (o varchars)
- 30. Consulta SQL para convertir nvarchar a int
Espero que la diferencia de rendimiento sea insignificante, pero realmente debería probarla para su caso específico. – Sjoerd
@Sjoerd: más de unas pocas filas, sí. De lo contrario, * será * enorme – gbn