为了简单描述在使用greenplum中遇见的问题,这里把问题简化。
1、创建test_a表,只有一个字段id varchar(32) 主键
2、创建test_b表 , 字段 id varchar(32) 主键,a_id varchar(32),no varchar(32)
现在通过代码循环往test_a表里插入15w数据,每插入test_a表一条数据,同时插入test_b表5条数据,通过a_id关联,no插入随机数字。
3、数据准备好,上sql
select
id,
(
select
min (no)
from
test_b l
where
l.a_id = t .id
) task_no
from
test_a t
limit 100;
这样一个查询居然要执行9s,
查看执行计划
也是才开始使用greenplum遇见的这个问题,请求高人解答
改成下面的SQL试试,GP优化器比较老,子查询优化不到位。
select
id,
min (no)
from
test_a t,
test_b l
where
l.a_id = t .id
limit 100;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。