Hint (Transact-SQL) - Join
Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure
Gli hint di join specificano che Query Optimizer deve imporre una strategia di join tra due tabelle in SQL Server. Per informazioni generali sui join e sulla relativa sintassi, vedere FROM (Transact-SQL).
Attenzione
Poiché Query Optimizer di SQL Server seleziona in genere il piano di esecuzione migliore per una query, gli hint devono essere usati solo se strettamente necessari ed esclusivamente da sviluppatori e amministratori di database esperti.
Si applica a
Convenzioni di sintassi Transact-SQL
Sintassi
<join_hint> ::=
{ LOOP | HASH | MERGE | REMOTE }
Nota
Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.
Argomenti
LOOP | HASH | MERGE
Specifica che il join della query deve essere un join ciclico, hash o di merge. L'utilizzo delle opzioni LOOP | HASH | MERGE consente di applicare un join specifico tra due tabelle. Non è possibile specificare LOOP come tipo di join insieme a RIGHT o FULL. Per altre informazioni, vedere Join.
REMOTE
Specifica che l'operazione di join viene eseguita nella posizione della tabella di destra. Ciò risulta utile quando la tabella di sinistra è una tabella locale e la tabella di destra è una tabella remota. Utilizzare l'opzione REMOTE solo quando il numero di righe della tabella di sinistra è inferiore a quello della tabella di destra.
Se la tabella di destra è locale, il join viene eseguito localmente. Se entrambe le tabelle sono remote ma l'origine dei dati è diversa, con l'opzione REMOTE il join viene eseguito nella posizione della tabella di destra. Se entrambe le tabelle sono tabelle remote dalla stessa origine dei dati, l'opzione REMOTE non è necessaria.
Non è possibile utilizzare l'opzione REMOTE quando per uno dei valori confrontati nel predicato di join viene eseguito il casting su regole di confronto diverse tramite la clausola COLLATE.
L'opzione REMOTE può essere utilizzata solo per operazioni INNER JOIN.
Osservazioni:
Gli hint di join vengono specificati nella clausola FROM di una query e consentono di imporre una strategia di join tra due tabelle. Se tra due tabelle viene specificato un hint di join, Query Optimizer impone in modo automatico l'ordine di join per tutte le tabelle unite in join della query, in base alla posizione delle parole chiave ON. Se si utilizza un CROSS JOIN senza la clausola ON, è possibile utilizzare le parentesi per indicare l'ordine di join.
Esempi
R. Utilizzo di HASH
Nell'esempio seguente viene specificato che l'operazione JOIN
nella query viene eseguita da un join HASH
. Nell'esempio viene utilizzato il database 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. Utilizzo di LOOP
Nell'esempio seguente viene specificato che l'operazione JOIN
nella query viene eseguita da un join LOOP
. Nell'esempio viene utilizzato il database 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. Utilizzo di MERGE
Nell'esempio seguente viene specificato che l'operazione JOIN
nella query viene eseguita da un join MERGE
. Nell'esempio viene utilizzato il database 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
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per