2013-10-23 37 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