暂无图片
pg中的merge join的条件,比如等值还是非等值
我来答
分享
暂无图片 匿名用户
pg中的merge join的条件,比如等值还是非等值

pg中的merge join的条件,比如等值还是非等值

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
小满未满、

等值

暂无图片 评论
暂无图片 有用 2
打赏 0
小满未满、

像这样

[postgres@halo-centos-8-release ~]$ psql
psql (17beta1)
Type "help" for help.

postgres=# create temp table tt4x(c1 int, c2 int, c3 int);
CREATE TABLE
postgres=# explain (costs off)
postgres-# select * from tt4x t1
postgres-# where not exists (
postgres(#   select 1 from tt4x t2
postgres(#     left join tt4x t3 on t2.c3 = t3.c1
postgres(#     left join ( select t5.c1 as c1
postgres(#                 from tt4x t4 left join tt4x t5 on t4.c2 = t5.c1
postgres(#               ) a1 on t3.c2 = a1.c1
postgres(#   where t1.c1 = t2.c2
postgres(# );
                       QUERY PLAN                        
---------------------------------------------------------
 Hash Anti Join
   Hash Cond: (t1.c1 = t2.c2)
   ->  Seq Scan on tt4x t1
   ->  Hash
         ->  Merge Right Join
               Merge Cond: (t5.c1 = t3.c2)
               ->  Merge Join
                     Merge Cond: (t4.c2 = t5.c1)
                     ->  Sort
                           Sort Key: t4.c2
                           ->  Seq Scan on tt4x t4
                     ->  Sort
                           Sort Key: t5.c1
                           ->  Seq Scan on tt4x t5
               ->  Sort
                     Sort Key: t3.c2
                     ->  Merge Left Join
                           Merge Cond: (t2.c3 = t3.c1)
                           ->  Sort
                                 Sort Key: t2.c3
                                 ->  Seq Scan on tt4x t2
                           ->  Sort
                                 Sort Key: t3.c1
                                 ->  Seq Scan on tt4x t3
(24 rows)

postgres=# 
复制


暂无图片 评论
暂无图片 有用 1
打赏 0
watson

PostgreSQL 中的 MERGE JOIN 是一种联接类型,通常用于执行 JOIN 查询。MERGE JOIN 在实现上是基于排序的合并算法,它要求联接的两边输入数据都是已经排序过的。

在 PostgreSQL 中,MERGE JOIN 可以是等值联接,也可以是非等值联接。等值联接是指使用等号(=)来比较联接条件中的两个关系的属性。非等值联接是指使用其他比较运算符(如>、<、>=、<=)来比较联接条件中的两个关系的属性。

在执行计划中,如果你看到 MERGE JOIN 并且联接条件是等值联接,那么联接条件就是等值的。如果联接条件包含其他比较运算符,那么联接就是非等值的。

以下是一个使用 MERGE JOIN 的 SQL 查询示例,这里展示的是等值联接:

SELECT a.column1, b.column2
FROM table_a a
JOIN table_b b ON a.join_key = b.join_key;

在这个例子中,table_a 和 table_b 是通过 join_key 这个字段进行等值联接的。

非等值联接的例子如下:

SELECT a.column1, b.column2
FROM table_a a
JOIN table_b b ON a.join_key > b.join_key;

在这个例子中,table_a 和 table_b 是通过 join_key 字段进行非等值联接的,联接条件是寻找 table_a 中 join_key 大于 table_b 中 join_key 的记录。

暂无图片 评论
暂无图片 有用 1
打赏 0
清风生

pg三种表连接nested loop,hash join,merge join,只有hash join因为涉及hash值匹配,所以只有hash join要求必须是等值连接。

暂无图片 评论
暂无图片 有用 2
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
怎么查询postgreSQL表空间使用率?
回答 1
我替你问了下度娘https://www.cnblogs.com/liuyuanyuanGOGO/p/3224554.html
postgreSQL xshell这里可以指定method,在命令里面怎么指定?
回答 1
通常默认password即可
postgreSQL 做简单的冗余就是主从,读写分离吗?
回答 1
是的,PostgreSQL的主从配置是一种简单的冗余方案,可以实现读写分离。具体来说,主库节点上部署的数据库实例既能读也能写,而从库节点上部署的数据库实例只能读。当数据写入主库节点后,主库节点将数据插
游标是什么意思?
回答 1
已采纳
游标是SQL的一种数据访问机制&nbsp;游标的作用1.遍历数据行;2.保存查询结果,方便下文调用。
pg禁用索引和约束
回答 1
1、索引:先删除,装再后重建2、约束:禁用后重建,ALTERTABLE&lt;tablename&gt;DISABLETRIGGERALL;DISABLE——ENABLE。
postgresql like和~查询效率哪个高?
回答 1
http://postgres.cn/docs/13/functionsmatching.htmlFUNCTIONSLIKE操作符等效于LIKE,而对应ILIKE。还有!和!操作符分别代表NOTLIK
postgreSQL 密码区分大小写 ,有参数控制吗?
回答 2
已采纳
默认就是确认大小写,可以指定密码的加密算法
怎么让 postgreSQL 用户只能本地登陆,其他用户任意ip登陆?
回答 1
您可以通过修改配置文件pghba.conf来实现这个目的。pghba.conf是PostgreSQL数据库中的一个配置文件,用于控制哪些用户可以从哪个IP地址连接到数据库。以下是一些步骤,可以帮助您实
普通vacuum执行的时候,其他事务是否可以正常读写该table?
回答 2
vacuumtablename,不影响联机交易。vacuumfulltablename,会阻塞联机交易,生产变更尤其要注意。
有同时兼容 oracle和plsql的工具吗?
回答 3
已采纳
dbeaver可以。免费。
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~