【发布时间】:2014-06-17 14:14:14
【问题描述】:
索引嵌套循环连接:
对于外部关系R中的每个元组tr,使用索引查找S中满足与元组tr连接条件的元组
一些资料提到“Indexed Nested-Loop Join”仅适用于等连接或自然连接,并且内部关系的连接属性上有索引
SELECT *
FROM tableA as a
JOIN tableB as b
ON a.col1 > b.col1;
假设我们在 b.col1 上有一个索引。
为什么 Indexed Nested-Loop Join 不适用于这种情况?
【问题讨论】:
-
你在问什么?什么是索引嵌套循环连接?如果这涉及查询计划,那么您应该指定您正在使用的 RDBMS。没有关于 RDBMS 引擎如何执行查询的 SQL 标准。
-
@Frazz 我已经更新了我的问题。谢谢。
-
您似乎没有得到的是,您无法决定查询的执行方式。您可以创建索引和其他东西......但它是 RDBMS 引擎决定获得您所要求的结果集的最佳方式。你的 SELECT 语句告诉引擎你想要什么。引擎决定如何将其提供给您。 (某些 RDBMS 允许您提出计划,但那是另一回事)
-
@Frazz 我想知道为什么索引嵌套循环连接仅适用于等连接或自然连接。谢谢。
-
最简单的答案是,这是它数据库开发人员所做的。正如@Frazz 所说,您没有选择权。如果您想了解更多信息,如果您告诉我们可能会有一些信息——正如 Frazz 所说——您使用的是什么 DBMS:MySQL? SQL 服务器?使用权?甲骨文? DB2?信息系统? Sybase(哪种)?等等..
标签: database database-optimization