Quels sont les avantages/inconvénients de l'utilisation d'une expression de table commune?
Je suis à la recherche d'amélioration de la performance de certains SQL, actuellement, d'expressions de table communes sont en train d'être utilisé et référencé plusieurs fois dans le script. Aurais-je obtenir des améliorations à l'aide d'une variable de table à la place? (Ne peut pas utiliser une table temporaire, comme le code est à l'intérieur des fonctions).
Voir Craig Freedman explication détaillée pour SQL Server texte du lien
OriginalL'auteur Luke Smith | 2008-09-10
Vous devez vous connecter pour publier un commentaire.
Vous devrez vraiment test de performance, Il n'y a pas de réponse Oui/Non. Comme par Andy Vie du post ci-dessus des liens, une CTE est juste un raccourci pour une requête ou d'une sous-requête.
Si vous appelez deux fois ou plus dans la même fonction, vous pouvez obtenir de meilleures performances si vous remplissez une variable de table, puis rejoindre/select. Cependant, comme les variables de table prennent de la place quelque part, et n'ont pas d'index/statistiques (À l'exception de toute déclaration de clé primaire sur la table variable) il n'y a aucun moyen de dire ce qui sera plus rapide.
Ils ont tous les deux les coûts et les économies, et qui est le meilleur moyen dépend des données qu'ils aillent, ils et ce qu'ils font avec elle. J'ai été dans votre situation, et après le test de vitesse dans des conditions différentes - Certaines fonctions d'expressions de table communes, et d'autres ont utilisé les variables de table.
OriginalL'auteur Meff
Probablement pas. CTE sont particulièrement bonnes à l'interrogation des données pour les structures en arbre.
OriginalL'auteur Joel Coehoorn