Que es más rápido unirse


12

Cual es mas rápido

SELECT * FROM X INNER JOIN Y ON x.Record_ID = y.ForignKey_NotIndexed_NotUnique

o

SELECT * FROM X INNER JOIN Y ON y.ForignKey_NotIndexed_NotUnique = x.Record_ID

Respuestas:


17

No habrá diferencia: el motor de consultas en mssql (y en la mayoría de los motores de bases de datos) creará el mismo plan de consultas para ambos. Puede verificar esto viendo el plan de consulta estimado y real en SQL Workbench.


10

El optimizador ignorará esto porque es un JOIN idéntico.

SQL es declarativo, no de procedimiento, y la consulta se evaluará en toto, no línea tras línea.


4

¿Qué tal crear una prueba que use sus propios datos para responder a su pregunta?

Si solo aprende una cosa sobre la programación de bases de datos, es que a menudo nunca hay una solución única para todo. Hay mejores prácticas, por supuesto, pero en general siempre es caso por caso.

La razón por la que digo esto es porque con las consultas de bases de datos de relación a menudo no hay un enfoque único para todos. Debido a que hay un planificador que decide cómo seguir sus datos, la misma consulta puede ser rápida o súper lenta, dependiendo de lo que el planificador elija hacer con la información que tiene disponible en un momento dado. Por ejemplo, a veces un índice es su mejor amigo un mes y un mes después su peor enemigo, dependiendo de si está buscando o insertando datos y cómo otros están usando el sistema mientras ejecuta la consulta. Por lo tanto, siempre recomiendo crear una prueba que pruebe para su caso de uso cómo funcionará esta consulta. E incluso entonces, sus resultados pueden variar con el tiempo y volverá a optimizar a medida que cambien los datos y el uso.

Creo que las respuestas que obtendrá de stackoverflow serán respuestas de libros de texto, no la respuesta del mundo real que solo su entorno puede proporcionar. Y al final, lo que importa es tu resultado en el mundo real.

Ahora su consulta simple que está mostrando aquí debe ser la misma en cuanto al rendimiento. Pero incluso entonces digo probarlo y probarlo si estás haciendo la pregunta. Confiaría en los resultados antes de confiar en la respuesta de cualquiera, incluida la mía.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.