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

La commande Sql JOIN affecte-t-elle les performances ?

L'ordre des jointures dans le serveur SQL2008R2 affecte incontestablement les performances des requêtes, en particulier dans les requêtes où il existe un grand nombre de jointures de table avec des clauses where appliquées à plusieurs tables.

Bien que l'ordre de jointure soit modifié dans l'optimisation, l'optimiseur n'essaie pas tous les ordres de jointure possibles. Il s'arrête lorsqu'il trouve ce qu'il considère comme une solution viable, car l'acte même d'optimisation utilise des ressources précieuses.

Nous avons vu des requêtes qui fonctionnaient comme des chiens (1min + temps d'exécution) se résumer à des performances inférieures à une seconde simplement en modifiant l'ordre des expressions de jointure. Veuillez noter cependant qu'il s'agit de requêtes avec 12 à 20 jointures et des clauses where sur plusieurs tables.

L'astuce consiste à définir votre commande pour aider l'optimiseur de requête à déterminer ce qui a du sens. Vous pouvez utiliser Force Order mais cela peut être trop rigide. Essayez de vous assurer que votre ordre de jointure commence par les tables où réduira le plus les données grâce aux clauses where.