日期:2014-05-17  浏览次数:20762 次

有关oralce plsql 运行时间的疑问,请帮忙解惑
1.oralce plsql 存储过程 循环处理数据,(插入更新还有其他一些逻辑),数据量大概1000万
2.使用job 调起来的,连续执行了两遍(第二遍执行,因为所有数据都已经存在,所以只做update以及其它逻辑)
3.第一次用时7小时,第二次用时1小时


我的疑惑就是为什么两次执行时间相差这么大

------解决方案--------------------
1.因为两次的操作不一样;
2.因为第一次JOB执行时,需要把用到的SQL放到buffer里,数据库来解析;
第二次JOB执行时,大量的重复的SQL已经在Buffer里,不需要重新解析了。就省了一些时间。

------解决方案--------------------
这就是PL/SQL相比普通SQL的优势
存储在服务器端,大大提升后续的执行效率
------解决方案--------------------
如上所说,oracle的机制保证了后续数据再处理的性能提升。
但是,如果只是做一次操作,楼主的循环处理就变得很不能让人满意了。