dudulang8088 2021-12-12 17:38 采纳率: 0%
浏览 13
已结题

GBase 8a慢SQL优化案例

insert select 执行时间超过2小时
insert into tableABCD

select distinct cast(ct.USER_ID as char) as USER_ID
from datumdb.dwa_grp_mem_info_d_20211031 dgmid
join datumdb.dwa_grp_mem_use_info_m_202110 ct
on cast(ct.GROUP_ID as char) = cast(dgmid.GROUP_ID as char);

执行时间超过2小时
暂无优化思路
优化执行性能
  • 写回答

2条回答 默认 最新

  • dudulang8088 2021-12-12 17:43
    关注

    最开始怀疑是因为左侧关联字段ct.GROUP_ID 加了函数造成索引失效,修改之后执行时间仍然在半小时以上,打开trace日志查看gnode层日志可见join返回行数远远大于两张源表的数据量,因此怀疑是笛卡尔积问题。

    img


    验证发现两表有大量的重复值,如下图所示

    img

    Exists语法适用于关联去重的场景。将关联字段改写为exists 写法后,SQL可以在1分钟内跑出结果
    insert into tableXXX
    select distinct ct.USER_ID from datumdb.dwa_grp_mem_info_d_20211031 dgmid
    where exists (select 1 from datumdb.dwa_grp_mem_use_info_m_202110 ct where ct.GROUP_ID=dgmid.GROUP_ID)

    评论

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 创建了问题 12月12日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器