我最近的任務是優化一些現有的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