我最近的任务是优化一些现有的Oracle存储过程。每个存储过程都会查询数据库并生成XML文件输出。其中一个特别需要大约20分钟才能完成执行。看看它有几个嵌套循环和不必要的查询。例如,而不是做一个优化Oracle存储过程
SELECT * from Employee e, Department d WHERE e.DEPT_ID = d.ID
--write data from query to XML
它更像
FOR emp_rec in (SELECT * from employee)
LOOP
SELECT * from Department WHERE id = emp_rec.DEPT_ID;
--write data from query to XML
END LOOP;
改变所有这些情况下看起来更像第一个选项加快了程序极大。我的问题是为什么?为什么在手动组合表格时比选择查询更快?什么是底层流程?
很好的回复。还有比我提供的更好的答案... :-) – 2012-02-03 17:15:40