web-dev-qa-db-fra.com

Quand dois-je utiliser un INNER -LOOP- JOIN au lieu d'un INNER JOIN

Aujourd'hui, j'ai appris quelque chose dans SQL Server appelé INNER LOOP JOIN .

Qu'est-ce que ça veut dire? (Google n'aide pas .. ou devrais-je dire ... les articles de blog à ce sujet sont un peu .. techniques et me font souffler).

En outre, quels sont les scénarios courants qui seraient une bonne idée d'utiliser un INNER LOOP JOIN sur un standard INNER JOIN?

30
Pure.Krome

LOOP | HASH | MERGE sont des conseils de jointure, spécifiant que la jointure dans la requête doit utiliser le bouclage, le hachage ou la fusion. Utilisation de LOOP | HASH | MERGE JOIN applique une jointure particulière entre deux tables. LOOP ne peut pas être spécifié avec RIGHT ou FULL comme type de jointure.

Vous devez toujours utiliser INNER JOIN. Laissez l'optimiseur de requêtes décider s'il souhaite effectuer une jointure LOOP, MERGE ou HASH. Dans presque tous les cas, l'optimiseur fera un meilleur jugement. Lequel sera utilisé et quand peut-on le trouver dans ma présentation http://sqlbits.com/Sessions/Event4/Understanding_Graphical_Execution_Plans .

24
Ash

Ce à quoi vous faites référence est un joint hint . Comme les autres conseils, les conseils de jointure ne doivent être spécifiés qu'en dernier recours car la plupart du temps, le serveur SQL choisit l'algorithme correct. Un bon article pour en expliquer certains est this .

8
amit_g