Indicateur de jointure (Transact-SQL)

Mis à jour : 17 juillet 2006

Spécifie l'application, par l'optimiseur de requêtes, d'une stratégie de jointure entre deux tables.

ms173815.note(fr-fr,SQL.90).gifImportant :
Étant donné que l'optimiseur de requêtes SQL Server 2005 sélectionne généralement le meilleur plan d'exécution pour une requête, nous recommandons de ne recourir aux indicateurs, y compris <join_hint>, qu'en dernier ressort, et à condition d'être un développeur ou un administrateur de base de données expérimenté.

S'applique à :

DELETE

SELECT

UPDATE

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

<join_hint> ::= 
     { LOOP | HASH | MERGE | REMOTE }

Arguments

  • LOOP | HASH | MERGE
    Spécifie que la jointure dans la requête doit utiliser les boucles, le hachage ou la fusion. L'utilisation des arguments LOOP | HASH | MERGE JOIN applique un type de jointure particulier entre deux tables. LOOP ne peut pas être spécifié en même temps que RIGHT ou FULL en tant que type de jointure.
  • REMOTE
    Effectue une opération de jointure sur le site de la table de droite. Ceci est utile lorsque la table de gauche est une table locale et que celle de droite est une table distante. L'argument REMOTE ne doit être utilisé que lorsque la table de gauche possède moins de lignes que celle de droite.

    Si la table de droite est une table locale, la jointure sera effectuée en local. Si les deux tables sont des tables distantes mais qu'elles proviennent de sources de données différentes, REMOTE provoque l'exécution de la jointure sur le site de la table de droite. Si les deux tables sont des tables distantes provenant de la même source de données, REMOTE n'est pas nécessaire.

    REMOTE ne peut pas être utilisé lorsque l'une des valeurs comparées dans le prédicat de jointure est affecté à un autre classement à l'aide de la clause COLLATE.

    REMOTE ne peut être utilisé que pour les opérations INNER JOIN.

Notes

Les indicateurs de jointure sont spécifiés dans la clause FROM d'une requête. Les indicateurs de jointure appliquent une stratégie de jointure entre deux tables. Si un indicateur de jointure est spécifié pour deux tables, l'optimiseur de requêtes applique automatiquement l'ordre de jointure de toutes les tables jointes de la requête, d'après la position des mots clés ON. Lorsqu'une jointure CROSS JOIN est utilisée sans la clause ON, l'ordre de jointure peut être indiqué au moyen de parenthèses.

Exemples

A. Utilisation de HASH

L'exemple suivant spécifie que l'opération JOIN figurant dans la requête est effectuée par une jointure HASH.

USE AdventureWorks;
GO
SELECT p.Name, pr.ProductReviewID
FROM Production.Product p
LEFT OUTER HASH JOIN Production.ProductReview pr
ON p.ProductID = pr.ProductID
ORDER BY ProductReviewID DESC;

B. Utilisation de LOOP

L'exemple suivant spécifie que l'opération JOIN figurant dans la requête est effectuée par une jointure LOOP.

USE AdventureWorks;
GO
DELETE FROM Sales.SalesPersonQuotaHistory 
FROM Sales.SalesPersonQuotaHistory AS spqh
    INNER LOOP JOIN Sales.SalesPerson AS sp
    ON spqh.SalesPersonID = sp.SalesPersonID
WHERE sp.SalesYTD > 2500000.00;
GO

C. Utilisation de MERGE

L'exemple suivant spécifie que l'opération JOIN figurant dans la requête est effectuée par une jointure MERGE.

USE AdventureWorks;
GO
SELECT poh.PurchaseOrderID, poh.OrderDate, pod.ProductID, pod.DueDate, poh.VendorID 
FROM Purchasing.PurchaseOrderHeader AS poh
INNER MERGE JOIN Purchasing.PurchaseOrderDetail AS pod 
    ON poh.PurchaseOrderID = pod.PurchaseOrderID;
GO

Voir aussi

Référence

Indicateurs (Transact-SQL)

Autres ressources

Comprendre les jointures de hachage
Comprendre les jointures de boucles imbriquées
Description des jointures de fusion
Principes de base des jointures
Utilisation des jointures

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 juillet 2006

Nouveau contenu :
  • Ajout de la section « Exemples ».