2013-10-23 36 views
0

嵌套循環聯接說明關於嵌套循環

在這種連接操作它處理從外側輸入和循環每行的通過內輸入的所有行來搜索基於聯接列匹配行。

嵌套循環連接通常使用索引在外部表的每一行上對內部表執行搜索。 例如:

Select T1.Col2 
From Table1 T1 
Inner Join Table2 T2 ON T1.Col1 = T2.Col1 AND T1.Col1 between 1 AND 36 

可以請你解釋這是外輸入和內輸入。在這裏,我們有兩個條件是T1.Col1 = T2.Col1 AND T1.Col1 between 1 AND 36 table is first filtered by which condition

+2

? –

+0

http://sqlcommitted.com/tag/hash-match-join/ – Blossom

回答

0

我寧願寫這樣的查詢:

SELECT T1.Col2 
     FROM Table1 T1 
INNER JOIN Table2 T2 ON T1.Col1 = T2.Col1 
    WHERE T1.Col1 BETWEEN 1 AND 36 

第二個條件是不是一個連接條件,但那裏的條件(表2不參與解決了條件)。

數據庫的優化器應該能夠決定是否過濾第一個Table1比連接Table2然後過濾更快,我想如果Table2非常小,則後者可以爲true。索引也可以改變查詢計劃。

無論如何,如果你想確定你的數據庫是如何執行你的查詢只是檢查查詢計劃。

0
SELECT T1.Col2 
     FROM Table1 T1 
INNER JOIN Table2 T2 ON T1.Col1 = T2.Col1 
    WHERE T1.Col1 >=1 and T1.Col1<36 

,你會發現更好的交代加入跟隨你在哪裏找到的SQL連接這種混亂的解釋鏈接

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html