Indicateurs (Transact-SQL) - Jointure

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Les indicateurs de jointure spécifient l'application, par l'optimiseur de requête, d'une stratégie de jointure entre deux tables dans SQL Server. Pour obtenir des informations générales sur les jointures et la syntaxe de jointure, consultez FROM (Transact-SQL).

Attention

Étant donné que l'optimiseur de requête SQL Server sélectionne généralement le meilleur plan d'exécution pour une requête, nous vous recommandons de ne recourir à ces conseils qu'en dernier ressort et seulement si vous êtes un développeur ou un administrateur de base de données expérimenté.

S’applique à

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

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. Pour plus d’informations, consultez Jointures.

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

R. Utilisation d'HASH

L'exemple suivant spécifie que l'opération JOIN figurant dans la requête est effectuée par une jointure HASH. L’exemple utilise la base de données AdventureWorks2022.

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

B. Utilisation d'LOOP

L'exemple suivant spécifie que l'opération JOIN figurant dans la requête est effectuée par une jointure LOOP. L’exemple utilise la base de données AdventureWorks2022.

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. L’exemple utilise la base de données AdventureWorks2022.

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

Indicateurs (Transact-SQL)