有关嵌套循环的说明

时间:2013-10-23 06:56:25

标签: sql join nested-loops

嵌套循环连接

在这种连接操作中,它处理来自外部输入的每一行并循环遍历内部输入的所有行,以基于连接列搜索匹配的行。

嵌套循环连接通常使用索引在外部表的每一行的内部表上执行搜索。 例如:

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 :(得分:0)

我宁愿用这种方式编写查询:

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

第二个条件不是连接条件,而是where条件(Table2不参与解决该条件)。

你的数据库的优化器应该能够决定过滤第一个Table1是否比连接Table2更快然后过滤,我想如果Table2非常小,后者可以是真的。索引也可以更改查询计划。

无论如何,如果您想确定数据库执行查询的方式,请查看查询计划。

答案 1 :(得分:0)

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

你会找到更好的解释加入点击链接

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