Pregunta

Me gustaría saber si hay reglas sobre el orden de INNER JOIN's en T-SQL 2000.

Tuve bajo dimensiones 62 x el rendimiento en mi consulta cuando mi INNER JOIN que actúan como un filtro colocado en el primer lugar de la final.

En referencia de http://sql-4-life.blogspot.com/2009/03/order-of-inner-joins.html

¿Fue útil?

Solución

La secuencia óptima (el plan de consulta) se determina en la consulta ejecutor, basado en el código SQL (operadores que use), los datos de statistics (estadísticas de la distribución estadística de los valores de las columnas, volumen de datos, etc.) y la estructura de base de datos (disponibilidad de índices, tipos de datos, etc.).Así, hay reglas, pero en primer lugar no todos ellos se encuentran bajo su control total, y segundo, el resultado es determinada por una combinación de muchos factores.

Para evaluar el rendimiento, siempre se debe tomar un vistazo a la estimación de plan de consulta y comparar los cambios en el plan causadas por los cambios en el código SQL, para entender por qué una consulta correr más rápido o más lento que el otro.

Otros consejos

El pedido que escribe las uniones no es relevante. La mayoría, si no todos, los optimizadores (y ciertamente el optimizador de SQL-Server) saben que JOIN es asociativo y conmutativo.

Encontrar el mejor plan de ejecución (que significa orden de unión, un algoritmo de unión para cada unión, elección de índices para usar, etc.), es un problema muy difícil que es exactamente qué optimizadores de consultas se construyeron para resolver y utilizan varias heurísticas y técnicas complejas y complejas. . Pero la orden que escribimos las uniones en nuestras consultas no se tiene en cuenta, a menos (tal vez) como punto de partida.

Elegir entre las formas (posiblemente millones o billones) de ordenar las uniones está lejos de ser trivial. Es como ser arrojado en un planeta con un terreno lleno de picos de montaña y pozos sin fondo con el objetivo de encontrar el punto más bajo. La posición inicial tiene un efecto insignificante en esta búsqueda, excepto tal vez en consultas muy complejas donde el optimizador obviamente no puede gastar la eternidad considerando todos los planes posibles.

Si no estoy equivocado, Recocido simulado es una de las heurísticas/técnicas utilizadas por El optimizador de consulta de SQL Server.
(Estaba equivocado)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top