首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么索引嵌套循环连接只适用于等连接或自然连接?

为什么索引嵌套循环连接只适用于等连接或自然连接?
EN

Stack Overflow用户
提问于 2014-06-17 14:14:14
回答 2查看 1K关注 0票数 1

索引嵌套-循环连接:

对于外部关系R中的每个元组tr,使用索引在S中查找满足元组tr的联接条件的元组。

一些资料提到,“索引嵌套-循环连接”仅适用于等连接或自然连接,并且内部关系的联接属性上有索引可用。

代码语言:javascript
运行
复制
SELECT *
FROM tableA as a
JOIN tableB as b
ON a.col1 > b.col1;

假设我们有一个关于b.col1的索引。

为什么索引嵌套循环连接不适用于这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-18 03:25:05

您引用的是数据库系统概念(c) Silberschatz、Korth和Sudarshan的幻灯片。

我们希望DBMS计算一个连接。有很多特殊的情况下,它可以做各种方式。这些可能涉及是否存在索引、选择条件等。

在某些情况下,这本书用这个名字调用的特殊技术是有效的:

索引嵌套-循环连接 如果一个索引在内循环的join属性上可用,那么join是一个equi-join或天然连接。

答案是,因为您的查询不符合条件。它不是等连接(即a.col1 = b.col1)或自然连接(使用(col1)或自然连接)。

至于为什么不满足这些条件意味着不使用该技术,这将是因为它不起作用和/或其他一些技术更好。你给了我技巧:

对于外部关系r中的每个元组tr,使用索引查找符合元组tr的联接条件的元组。

如果这是一个不平等,您就不能“在”索引中查找;您可以搜索索引。不是这个方法。

票数 3
EN

Stack Overflow用户

发布于 2020-09-17 15:36:50

我读了第二个答案,所以我看了一本书,书名为“数据库系统概念第7版”,作者是Silberschatz,Korth和Sudarshan

首先,正如您所看到的,索引嵌套循环连接可以在内部循环上可用索引时使用,而且我们没有任何其他与相等联接相关的限制。

我认为混淆是与合并连接。在第15章(查询处理主题)第708页中,我们可以看到该算法仅用于计算自然连接和等连接。

利用这个话题,只提一下Hash。在这种情况下,与合并联接一样,也可以仅用于计算自然联接和等联接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24266137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档