Parce que cela prive l'optimiseur de la possibilité d'envisager d'autres méthodes qui peuvent être plus efficaces.
Lorsque la distribution des données (sur lesquelles l'optimiseur prend ses décisions) est fortement faussée et que les statistiques ne sont pas en mesure de la représenter correctement.
Ce sont des algorithmes différents.
-
LOOPest des boucles imbriquées :pour chaque enregistrement de la table externe, la table interne est recherchée pour les correspondances (en utilisant l'index de disponible). Le plus rapide lorsque seule une infime partie des enregistrements des deux tables satisfait leJOINet leWHEREconditions. -
MERGEtrie les deux tables et les parcourt dans l'ordre de tri, en ignorant les enregistrements sans correspondance. Le plus rapide pour leFULL JOINs et lorsque les deux jeux d'enregistrements sont déjà triés (à partir d'opérations de tri précédentes ou lorsque le chemin d'accès à l'index est utilisé) -
HASHconstruire une table de hachage dans le stockage temporaire (mémoire outempdb) de l'une des tables et la recherche pour chaque enregistrement de l'autre. Le plus rapide si la grande partie des enregistrements de l'une ou l'autre des tables correspond àWHEREetJOINétat.