Question

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).

Était-ce utile?

La solution

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/sélectionner à partir qui.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.

Autres conseils

Probablement pas.CTE sont particulièrement bonnes à l'interrogation des données pour les structures en arbre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top