本文共 408 字,大约阅读时间需要 1 分钟。
连接路径中包括嵌套循环连接、哈希连接和归并连接,本文主要介绍嵌套循环连接和哈希连接的一些特点。
假设有 2 个表,他们的数据分别如下:
TEST_A 表:
A | B | C | D |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 2 | 2 |
TEST_B 表:
A | B | C | D |
---|---|---|---|
2 | 2 | 2 | 2 |
3 | 3 | 3 | 3 |
我们假设这两个表做连接的 SQL 语句生成了一个嵌套循环连接:
SELECT * FROM TEST_A a, TEST_B b WHERE a.a = b.a;
首先,嵌套循环连接的结点会向外表的 SeqScan 拉取一条元组。在获得这条元组之后,嵌套循环连接需要把这条元组记录到自己的上下文里,因为这条元组要和内表的左右元组去尝试做连接操作,而 PostgreSQL 的执行器是“一次一元组”的,所以内表的每条元组都需要使用到这个外表元组。
获得外表元组之后,就可以尝试去内表拉取一条元组:
内表和外表的元组都准备好之后
转载地址:http://aayni.baihongyu.com/