Stored procedures 过程的Oracle执行性能

Stored procedures 过程的Oracle执行性能,stored-procedures,plsql,oracle11g,Stored Procedures,Plsql,Oracle11g,我在数据库包中有一个过程,它执行以下操作: 该过程接收一个到table-TESTTABLE的ID 然后我们打开一个游标,对TESTTABLE上的每一行执行+/-40个查询,这些查询将获得一些参考数据,如解码代码、获取更多信息等。这些查询依赖于TESTTABLE中每一行的输入,因此它们是动态创建和执行的 对于处理的每一行,在另一个表中进行插入 到目前为止还不错 当TESTTABLE有60行时,过程的执行时间约为10秒(~60*40个查询加上表上的60个插入) 当TESTTABLE用于实例120

我在数据库包中有一个过程,它执行以下操作:

  • 该过程接收一个到table-TESTTABLE的ID

  • 然后我们打开一个游标,对TESTTABLE上的每一行执行+/-40个查询,这些查询将获得一些参考数据,如解码代码、获取更多信息等。这些查询依赖于TESTTABLE中每一行的输入,因此它们是动态创建和执行的

  • 对于处理的每一行,在另一个表中进行插入

到目前为止还不错

当TESTTABLE有60行时,过程的执行时间约为10秒(~60*40个查询加上表上的60个插入)

当TESTTABLE用于实例120行时,执行时间约为30分钟(120*40个查询加上120个插入)。这是不能接受的

我不明白为什么会发生这种情况,从几秒钟到几十分钟

你能帮我解决这个问题吗?用更少的时间执行这个任务


非常感谢。

能给我们看一下代码吗?以及表结构和列上的索引。当有更多行时,是否会获得不同的“更多信息”?可能一个动态查询只针对一个新行调用,这会导致速度减慢。不过你需要缩小范围,我们不能帮你。