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

SQL 2005 CTE vs tabela TEMP Desempenho quando usado em junções de outras tabelas


CTE é apenas um alias para a consulta.

Ele pode (ou não) ser executado novamente toda vez que for usado.

Não há uma maneira limpa de forçar o CTE materialização em SQL Server (como o /*+ MATERIALIZE */ da Oracle ), e você tem que fazer truques sujos como este:

CTE pode melhorar o desempenho se usado em planos que requerem apenas uma avaliação (como HASH JOIN , MERGE JOIN etc.).

Nesses cenários, a tabela de hash será criada diretamente do CTE , ao usar a tabela temporária, será necessário avaliar o CTE , puxando os resultados para a tabela temporária e lendo a tabela temporária mais uma vez.