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

LEFT JOIN Significativamente mais rápido que INNER JOIN


A junção à esquerda parece ser mais rápida porque o SQL é forçado a fazer a seleção menor primeiro e, em seguida, a junção a esse conjunto menor de registros. Por alguma razão, o otimizador não quer fazer isso naturalmente.

3 maneiras de forçar as junções a acontecerem na ordem correta:
  1. Selecione o primeiro subconjunto de dados em uma tabela temporária (ou variável de tabela) e junte-se a ele
  2. Use junções à esquerda (e lembre-se de que isso pode retornar dados diferentes porque é uma junção à esquerda e não uma junção interna)
  3. use a palavra-chave FORCE ORDER. Observe que, se os tamanhos ou esquemas de tabela forem alterados, o plano de consulta pode não estar correto (consulte https://dba.stackexchange.com/questions/45388/forcing-join-order )