减少Oracle存储过程的执行时间

减少Oracle存储过程的执行时间,oracle,performance,stored-procedures,Oracle,Performance,Stored Procedures,我有一个每天运行的db作业,它可以在三个小时内从一个3500.000行的表中处理10000行。 调整主游标的select语句只能为我节省30分钟,但我需要将作业运行时间从3小时减少到10-15分钟。 我必须声明,游标只有主循环,每个记录都有对外部系统的调用,以便获取或发送数据,因此这是我无法控制的开销。在获取每个记录后处理它的时间略少于一秒,这是不可接受的 我能做点什么吗?所有的想法都非常受欢迎 您可以尝试并行处理行。您可以将每个查询的作业提交到外部系统,或者尝试并行运行,可能是您可以使用高级队

我有一个每天运行的db作业,它可以在三个小时内从一个3500.000行的表中处理10000行。 调整主游标的select语句只能为我节省30分钟,但我需要将作业运行时间从3小时减少到10-15分钟。 我必须声明,游标只有主循环,每个记录都有对外部系统的调用,以便获取或发送数据,因此这是我无法控制的开销。在获取每个记录后处理它的时间略少于一秒,这是不可接受的


我能做点什么吗?所有的想法都非常受欢迎

您可以尝试并行处理行。

您可以将每个查询的作业提交到外部系统,或者尝试并行运行,可能是您可以使用高级队列。解释:将选定的每一行发送到队列,查询到外部将继续AQ

您是否尝试解释您的查询?什么指数?哪张桌子?什么模式?您的数据服务器有多忙?是否存在内存限制等?请尝试在不调用外部系统的情况下运行您的过程,需要多长时间?问题可能不在于游标,而在于外部系统。“调用外部系统”是什么意思?我使用的查询经过调优,并且使用了正确的索引。外部系统用于验证数据(公共注册等)和根据SSN等检索附加信息。我想问的是,是否有一种方法可以在等待外部系统(这会产生巨大的开销)响应前一行的同时处理下一行。生产环境中有一个允许我并行运行的设置,所以我试图找到一种作弊的方法。。。