2009-05-06 57 views

回答

7

雖然我很想回答「不」或「我不這麼認爲」,但知道這個問題的答案的唯一方法是去親自測量。使用像JetBrains dotTrace和TOAD自己的分析器這樣的分析器來查明。

所有其他答案都是推測性的。

2

如果您構建存儲過程(PL/SQL包)的方式會更快,這樣數據和客戶端之間的數據傳輸量將減少。

4

它應該是。將內聯SQL發送到數據庫時,引擎必須解析並執行。存儲過程在創建時正在被解析(並編譯)。所以至少你正在獲得解析時間。

+2

希望從應用程序提交的SQL將使用綁定變量,因此重複執行不會硬解析。在PL/SQL中推薦綁定變量可能是合適的,因爲它比綁定它們容易得多,因此更好的實踐被提升。 – 2009-07-31 10:18:30

3

我預計存儲過程在幾乎所有情況下都會更快。
但它主要取決於你的代碼。
例如,如果您從數據庫中獲得結果集,然後使用此數據執行其他查詢,則最終會導致網絡流量中的大量開銷。如果您忘記爲請求使用單個連接,則情況尤其如此。
然後使用單個存儲過程返回聚合數據(當然,如果可能的話)可能更有效。

0

Jon Limjap說:「所有其他答案都是推測性的。」

這句話有很多道理。有很多因素:數據庫服務器如何設置?網絡速度/可靠性如何? SQL如何? PL/SQL如何?如果我想(並且不經意地,過去的項目!),我可以編寫非常慢的SQL和/或PL/SQL。所以如果可以的話,試試兩個。