it-swarm-fr.com

Différence entre Hash, Merge et Loop join?

Dans SQL Server, vous pouvez spécifier les indications de jointure:

  • HACHAGE REJOINDRE
  • FUSIONNER REJOINDRE
  • BOUCLE JOIN

Quelle est la définition de ces trois indices de jointure et quand faut-il les utiliser?

42
Andrew Bickerton

Depuis MSDN, dans la rubrique Advanced Query Tuning Concepts :

SQL Server utilise trois types d'opérations de jointure:

  • Jointures de boucles imbriquées

  • Fusionner les jointures

  • Hash rejoint

Si une entrée de jointure est petite (moins de 10 lignes) et que l'autre entrée de jointure est assez grande et indexée sur ses colonnes de jointure, une jointure par boucles imbriquées d'index est l'opération de jointure la plus rapide car elle nécessite le moins d'E/S et le moins de comparaisons. Pour plus d'informations sur les boucles imbriquées, voir Présentation des jointures de boucles imbriquées.

Si les deux entrées de jointure ne sont pas petites mais sont triées sur leur colonne de jointure (par exemple, si elles ont été obtenues en analysant les index triés), une jointure de fusion est l'opération de jointure la plus rapide. Si les deux entrées de jointure sont grandes et que les deux entrées sont de tailles similaires, une jointure de fusion avec tri préalable et une jointure de hachage offrent des performances similaires. Cependant, les opérations de jointure de hachage sont souvent beaucoup plus rapides si les deux tailles d'entrée diffèrent considérablement l'une de l'autre. Pour plus d'informations, voir Présentation des jointures de fusion.

Les jointures de hachage peuvent traiter efficacement des entrées volumineuses, non triées et non indexées.

Mais je pense que vous devriez commencer avec un sujet plus basique: Query Tuning et enfin utiliser les conseils de requête.

39
Marian