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.
Important : |
---|
É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 à :
Conventions 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
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 |
|