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

Por que há uma classificação aparecendo no meu plano de execução?


O SQL Server tem três algoritmos para escolher quando precisar unir duas tabelas. O Nested-Loops-Join, o Hash-Join e o Sort-Merge-Join. Qual deles ele seleciona com base em estimativas de custo. Nesse caso, ele percebeu que, com base nas informações disponíveis, um Sort-Merge-Join era a escolha certa.

Nos planos de execução do SQL Server, um Sort-Merge é dividido em dois operadores, o Sort e o Merge-Join, porque a operação de classificação pode não ser necessária, por exemplo, se os dados já estiverem classificados.

Para obter mais informações sobre associações, confira minha série de associações aqui:http://sqlity.net/en/1146/a-join-a-day-introduction/ O artigo sobre o Sort-Merg-Join está aqui:http://sqlity.net/en/1480/a-join-a-day-the-sort-merge-join/

Para tornar sua consulta mais rápida, primeiro examinaria os índices. Você tem várias varreduras de índice clusterizado na consulta. Se você puder substituir alguns deles por buscas, provavelmente será melhor. Verifique também se as estimativas que o SQL Server produz correspondem às contagens de linhas reais em um plano de execução real. Se estiverem distantes, o SQL Server geralmente faz más escolhas. Portanto, fornecer estatísticas melhores também pode ajudá-lo a consultar o desempenho.