Join 有三種主要演算法,分別為 Nested Loops、Merge Join 和 Hash Join,該篇紀錄 Nested Loops 相關
下面兩張圖為 [TSQL] 和 [執行計畫] Outer Table 和 Inner Table 對應,Outer Table 和 Inner Table 要從執行計畫去觀察,無法從 TSQL 得知,TSQL 圖片只是方便對應了解
另外一個常見的 Nested Loops 情況就是 Key Lookup,當 nonclustered index 沒有辦法滿足所需資料,就會透過 Nested Loops 跑 Key Lookup 去取回所需資料
SELECT *
FROM Person.Person
WHERE LastName = 'Duffy'
觀察 Nested Loops 要注意 Outer Table 資料量,基本上會希望 Outer Table 要從資料量小的開始,Turning 時剛好發現一個案例,Outer Table 資料量大於 Inner Table
- 參考資料
- Techday2012 TSQL 執行計畫解析簡報
- SQL Server Performance 效能調校書籍 P611
- The Importance of Nested Loops Joins in SQL
- Introduction to Nested Loop Joins in SQL Server
沒有留言:
張貼留言