sql >> Base de Datos >  >> RDS >> Sqlserver

¿El orden Sql JOIN afecta el rendimiento?

El orden de unión en el servidor SQL2008R2 sin duda afecta el rendimiento de las consultas, particularmente en consultas donde hay una gran cantidad de uniones de tablas con cláusulas where aplicadas a varias tablas.

Aunque el orden de unión se cambia en la optimización, el optimizador no prueba todos los órdenes de unión posibles. Se detiene cuando encuentra lo que considera una solución viable, ya que el mismo acto de optimización utiliza recursos preciosos.

Hemos visto que las consultas que funcionaban como perros (1 minuto + tiempo de ejecución) se redujeron a un rendimiento de menos de un segundo simplemente cambiando el orden de las expresiones de combinación. Sin embargo, tenga en cuenta que se trata de consultas con 12 a 20 uniones y cláusulas where en varias de las tablas.

El truco consiste en establecer su orden para ayudar al optimizador de consultas a descubrir qué tiene sentido. Puedes usar Force Order pero eso puede ser demasiado rígido. Trate de asegurarse de que su orden de unión comience con las tablas donde se reducirán más los datos a través de las cláusulas where.