Decir que tengo una consulta como la siguiente:¿El orden de JOINs hace la diferencia?
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
iba yo a ver una mejora del rendimiento si cambiaba el orden de mi une en Tabla2 y Tabla 3. Consulte a continuación:
SELECT t1.id, t1.Name
FROM Table1 as t1 --800,000 records
INNER JOIN Table3 as t3 -- 1,000 records
ON t1.OtherId = t3.id
INNER JOIN Table2 as t2 --500,000 records
ON t1.fkID = t2.id
He oído que el Optimizador de consultas intentará determinar el mejor orden pero no siempre funciona. ¿La versión de SQL Server que está usando hace la diferencia?
¿Cómo lo compruebo? ¿Existe una buena regla general sobre la frecuencia con la que debo actualizar mis estadísticas? –
¿Las filas estimadas y reales no están incluidas en el plan de ejecución real? Entonces, si está estimando 1 fila y está devolviendo miles, entonces probablemente deba actualizar mis estadísticas. ¿Hace una diferencia si me estoy uniendo en una mesa temporal? –
Además, ¿las estadísticas marcan la diferencia si se une a una vista? –