將存儲過程分解爲多個過程而不是大的過程時,性能是否有任何區別?
哪一個更快?
Oracle/PLSQL性能
例如:
mainSP
callSP1
callSP2
callSP3
end;
而不是:
SP
....
....
....
將存儲過程分解爲多個過程而不是大的過程時,性能是否有任何區別?
哪一個更快?
Oracle/PLSQL性能
例如:
mainSP
callSP1
callSP2
callSP3
end;
而不是:
SP
....
....
....
任何性能優勢將在非常罕見的情況下發生,例如,主循環在循環中被多次調用,並且每次迭代都不需要太多時間。
大多數情況下,將程序分解爲邏輯步驟的可維護性遠遠超過可能獲得的微小性能提升。
如前所述,基準和測試 - 除非您看到明顯的好處,否則要維護 - 未來的開發人員會感謝您!
這取決於發生了什麼。
如果mainSP正在通過callSP1循環,mainSP可能只是執行單個語句來處理一組數據,那麼它會更慢。
在調用其他過程時會有一些額外的開銷,並且在傳回錯誤消息時也有一點痛苦。
如果您全部複製代碼,請創建一個常用例程。其他明智保持在一起。
從理論上講,每次從另一個存儲過程調用存儲過程時都會遇到輕微的性能下降。但是,確切的影響因被調用的參數數量和存儲過程類型而異。
總的來說應該沒關係。但是,如果有疑問測試。
內聯絕對是在11g中添加的。早期版本的Oracle(8i,也許是9i)具有顯着的功能開銷,這導致我們在性能超過DRY原則的情況下自行「內聯」代碼。 – 2009-08-12 16:15:42
我注意到你說了一些有關參數的東西。有3或4個遊標有任何性能問題。 – jDeveloper 2009-05-18 21:03:56