Non sono chiaro sulla differenza di lavoro tra le query menzionate di seguito.Loop Join in SQL Server 2008
In particolare, non mi è chiaro il concetto di
OPTION(LOOP JOIN)
.
primo approccio: si tratta di un tradizionale join utilizzato, che è più costoso di tutti i sotto.
SELECT *
FROM [Item Detail] a
LEFT JOIN [Order Detail] b ON a.[ItemId] = b.[fkItemId] OPTION (FORCE ORDER);
secondo approccio: Esso include OPTION
in una dichiarazione con i dati ordinati, semplicemente ottimizzati.
SELECT *
FROM [Item Detail] a
LEFT LOOP JOIN [Order Detail] b ON a.[ItemId] = b.[fkItemId] OPTION (FORCE ORDER);
terzo approccio: Ecco, non mi è chiaro, come funziona la query e comprende OPTION
con loop join
!!?
SELECT *
FROM [Item Detail] a
LEFT LOOP JOIN [Order Detail] b ON a.[ItemId] = b.[fkItemId] OPTION (LOOP JOIN);
Qualcuno può spiegare la differenza e il modo di lavorare e vantaggi di ciascuno rispetto ad altri?
Nota: Questi sono non Nested O Hash loop!
documentazione: [Query Hints] (https://msdn.microsoft.com/en-us/library/ms181714.aspx) e [Join Hints] (https://msdn.microsoft.com/en-GB /library/ms173815.aspx) – Tanner
Perché secondo voi il primo approccio è "il più costoso di tutti sotto"? – Magnus
L'ho provato con il mio server locale e ho ottenuto la massima differenza! e, naturalmente, la differenza era compresa tra +2 e +3 secondi solo – Vikrant