大佬们,帮忙指点下存储过程优化,

知不知否 2024-03-21 10:12:40

有个存储过程里面就有一段简单SQL, CALL执行存储过程跑40分钟都没结束

但是把这段单独拉出来,放在gsql 20分钟就能执行完毕

目标就是CALL执行存储 也能在20分钟左右执行完毕,哪位大佬帮忙看看,实在是没有思路了,谢谢

insert into table_a
select col_1
       col_2
      ,sum(col_3)
      ....    --有50多个SUM
      ,sum(col_50)
from  table_pearson  t1
left join table_xinzi  t2
on   t1.xxx=t2.xxxx
;

 

...全文
291 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
viruses旧人 2024-03-22
  • 打赏
  • 举报
回复

在这种情况下,存储过程执行时间长可能是由于存储过程内部的逻辑、索引、统计信息等因素导致的性能问题。以下是一些建议,希望能帮助您优化存储过程的执行时间:

分析执行计划:使用数据库工具(如 MySQL 的 Explain)来查看存储过程的执行计划,确认是否存在慢查询、索引未命中等问题。优化查询和表连接顺序可以提高查询性能。

索引优化:确保表中涉及到的列上都有合适的索引,特别是连接条件和用于聚合函数的列。索引的正确使用可以显著提升查询性能。

分批处理:考虑将大查询拆分成多个较小的查询,分批处理数据,避免一次性处理大量数据导致性能下降。

定期维护统计信息:定期更新表的统计信息,确保数据库优化器能够正确选择执行计划。

优化存储过程逻辑:检查存储过程内部的逻辑,尽量简化和优化查询,避免不必要的计算和操作。

缓存查询结果:如果某些数据不经常变化,可以考虑缓存查询结果,减少重复计算的开销。

使用临时表:在需要的情况下,可以考虑使用临时表来存储中间结果,减少数据读取和处理的复杂性。

通过以上方法,您可以逐步优化存储过程的执行性能,使其在较短的时间内完成执行。如果您需要更具体的帮助或有其他问题,请随时告诉我。祝您顺利优化存储过程的执行时间!

辰龙ZZJ 2024-03-21
  • 打赏
  • 举报
回复

可以试下两个方案
第一,添加条件,分批插入,比如,工号小于1000的插入一次,大于1000的插入一次。
第二,增加索引,创建视图,从视图里查询插入
(你的sql没复制全吧,分组函数要补全吧)

太空漫步11 2024-03-21
  • 打赏
  • 举报
回复

提供一个思路:新建一个视图,它是t1和t2的关联表。

知不知否 2024-03-21
  • 打赏
  • 举报
回复

表都是普通的表,没设置分区、主键等

155

社区成员

发帖
与我相关
我的任务
社区描述
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。
开源数据库开发dba 企业社区
社区管理员
  • openGauss社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧