【发布时间】:2012-02-26 02:28:53
【问题描述】:
我最近的任务是优化一些现有的 Oracle 存储过程。每个存储过程都会查询数据库并生成 XML 文件输出。一个特别是需要大约 20 分钟才能完成执行。看看它有几个嵌套循环和不必要的查询。例如,而不是做一个
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;
将所有这些案例更改为更像第一个选项,极大地加快了程序的速度。我的问题是为什么?为什么在选择查询中进行连接比手动组合表更快?底层流程是什么?
【问题讨论】:
标签: sql oracle stored-procedures