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

Por que o CTE é melhor que o cursor/tabela derivada/subconsultas/tabela temporária etc.?


Um CTE (não recursivo) não usa cursores. É uma abordagem baseada em conjuntos. Essa é a grande diferença em relação ao uso de cursores. Mas isso é verdade para não usar cursores em geral.

Os cursores devem ser evitados onde for absolutamente possível (como tenho certeza de que todos sabemos).

Um CTE não é necessariamente melhor do que usar uma tabela derivada, mas leva a um código TSQL mais compreensível. Um CTE é realmente apenas um atalho para uma consulta ou subconsulta; algo semelhante a uma visão temporária.

A situação em que os CTEs podem não ser a melhor abordagem é quando o otimizador do plano de consulta obtém estimativas de linha imprecisas para o CTE.

Pergunta relacionada:Quais são as vantagens/desvantagens de usar um CTE?