面向页面的嵌套循环连接-查询优化

时间:2018-08-17 06:47:38

标签: sql database query-optimization nested-loops

这可能是一个奇怪的问题。我已经搜索了这个问题,甚至找不到我想要的术语。

我正在学习QUERY OPTIMATION in DB,现在正在计算费用。我了解了归类为

的嵌套循环连接
  1. 简单嵌套循环联接(SNLJ)
  2. 面向页面的嵌套循环连接(PONLJ)
  3. 面向块的嵌套循环联接(BONLJ)

我对SNLJ和BONLJ表示满意,但找不到有关 PONLJ 的文章或教程。我对 PONLJ 唯一了解的是

对于从R读取的每个页面,获取S的所有页面,并写出匹配的元组对,其中r在R页面中,S在S页面中。费用= M + M * N

我需要对此进行更多说明。很好地描述答案。

谢谢。

1 个答案:

答案 0 :(得分:1)

发表评论的时间有点长。

我不确定这是什么困惑-也就是说,您的简短描述对我来说有意义。

嵌套循环联接的想法是,代码在一个表中的行之间循环。然后,对于一个表中的每一行,它通过比较每对可能的行对在第二张表中查找匹配的行。

通常,您可以通过逐行循环行来理解这一点。但是事实是数据库以其他单位存储行,尤其是在页面上。

PONLJ遍历表中的每个页面,然后遍历该页面上的所有行。尽管这听起来像两个循环,但实际上它仅遍历所有行一次。

在第二张桌子上重复相同的过程。