索引嵌套循环加入:
对于外部关系R中的每个元组tr,使用索引在S中查找满足连接条件的元组与元组tr
一些材料提到"索引嵌套循环加入"仅适用于等连接或自然连接,并且内部关系的连接属性
上有索引SELECT *
FROM tableA as a
JOIN tableB as b
ON a.col1 > b.col1;
假设我们在b.col1上有一个索引。
为什么Indexed Nested-Loop Join不适用于这种情况?
答案 0 :(得分:2)
您正在引用数据库系统概念的幻灯片(c)Silberschatz,Korth和Sudarshan。
我们希望DBMS计算连接。有很多特殊情况可以通过各种方式实现。这些可能涉及是否有索引,选择条件等。
该书通过该名称调用的特定技术在某些情况下有效:
索引嵌套循环连接
如果内部循环的连接属性和连接上有索引可用 是一种等连接或自然连接
答案是,因为您的查询不符合条件。它不是等连接(即ON或WHERE a.col1 = b.col1)或自然连接(USING(col1)或NATURAL JOIN)。
至于为什么不满足这些条件意味着不使用该技术,那将是因为它不起作用和/或其他一些技术更好。你给了这个技术:
对于外部关系r中的每个元组tr,使用索引查找 s中的元组用元组tr满足连接条件
如果这是不平等,你就不能在"中查找"指数;您已搜索索引。不是这种方法。
答案 1 :(得分:0)