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

Conseils JOIN SQL SERVER 2008

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.

  1. LOOP est 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 le JOIN et le WHERE conditions.

  2. MERGE trie les deux tables et les parcourt dans l'ordre de tri, en ignorant les enregistrements sans correspondance. Le plus rapide pour le FULL JOIN s 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é)

  3. HASH construire une table de hachage dans le stockage temporaire (mémoire ou tempdb ) 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 à WHERE et JOIN état.