Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A ordem Sql JOIN afeta o desempenho?


A ordem de junção no servidor SQL2008R2 afeta inquestionavelmente o desempenho da consulta, principalmente em consultas em que há um grande número de junções de tabela com cláusulas where aplicadas em várias tabelas.

Embora a ordem de junção seja alterada na otimização, o otimizador não tenta todas as ordens de junção possíveis. Ele para quando encontra o que considera uma solução viável, pois o próprio ato de otimização usa recursos preciosos.

Vimos que as consultas que estavam funcionando como cães (1min + tempo de execução) diminuíram para um desempenho de menos de um segundo apenas alterando a ordem das expressões de junção. Observe, no entanto, que essas são consultas com 12 a 20 junções e cláusulas where em várias das tabelas.

O truque é definir seu pedido para ajudar o otimizador de consulta a descobrir o que faz sentido. Você pode usar Force Order, mas isso pode ser muito rígido. Tente certificar-se de que sua ordem de junção comece com as tabelas onde irá reduzir mais os dados através das cláusulas where.