GBase 8a
其他
问答
多表关联写法疑问
发表于2025-06-27 08:55:0377次浏览8个评论
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】:9.5.3.28.1880496bd
【操作系统】:
【CPU】:
【问题描述】*:版本升级后原来的
select xxx from tab_a a
left jon tab_b b
on a.id=b.id
and b.dt='20250627'
where a.dt='20250627'
需要改成下面,不然查询效率很慢,不是很理解为什么要这样写,和市面上其他数据库基本写法不能保持一致吗?这样导致需要改写大量存量脚本
select xxx from tab_a a
left jon (select * from tab_b where dt='20250627') b
on a.id=b.id
where a.dt='20250627'
甚至是需要改成下面才有效
select xxx from (select * from tab_a where dt='20250627') a
left jon (select * from tab_b where dt='20250627') b
on a.id=b.id
评论
登录后才可以发表评论

GBase社区管理员发表于 1年前

GBase社区管理员发表于 1年前
@社区管理员:
根据您的描述,最好能分析一下业务SQL的Trace日志,建议您联系项目售后支持人员进行详细排查
GBase用户12851发表于 1年前
@社区管理员:不是一个SQL额,是所有SQL都这样,肯定是你们底层改了算法或什么吧
GBase用户12851发表于 1年前
@社区管理员:应该是hash分布表,创建表时没有额外关键词,也不是复制表。从哪个版本升级上去的要专门负责这块的同事才知道,我就想知道你们最新版本就是要这样写法才行吗?

GBase社区管理员发表于 1年前
@GBase用户12851:
如果是没有额外关键词,那不是hash分布表,是随机分布表。
程序是有left join右表拉表时带单表条件过滤的优化逻辑的。建议建成hash分布表再试一下
GBase用户12851发表于 1年前
@社区管理员:好的,试了一下hash分布表确实可以,感谢
levvel发表于 3个月前
哎呀,怎么说呢,嗯......
GBase用户51884发表于 2个月前
等待有缘人解答。
热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529
请问是从哪个版本升级上来的。
进行join的两个表都是hash分布表吗?hash分布键是id列吗?