Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Performances de la table SQL 2005 CTE vs TEMP lorsqu'elle est utilisée dans les jointures d'autres tables

CTE est juste un alias pour la requête.

Il peut (ou non) être réexécuté à chaque fois qu'il est utilisé.

Il n'y a pas de moyen propre de forcer CTE matérialisation dans SQL Server (comme /*+ MATERIALIZE */ d'Oracle ), et vous devez faire des trucs sales comme celui-ci :

CTE peut améliorer les performances s'il est utilisé dans des plans ne nécessitant qu'une seule évaluation (comme HASH JOIN , MERGE JOIN etc.).

Dans ces scénarios, la table de hachage sera construite directement à partir du CTE , tandis que l'utilisation de la table temporaire nécessitera d'évaluer le CTE , en extrayant les résultats dans la table temporaire et en lisant à nouveau la table temporaire.