2013-07-26 29 views
-2

準備好的語句應該被認爲是提高數據庫性能的一種效率低於存儲過程的正確方法,因爲存儲過程在跨會話的持久性中保持不變,而準備好的語句不會呢?換句話說,準備好的語句會在每個會話中重新編譯和緩存?MySql存儲過程比Prepared Statements更可取嗎?

我意識到這個網站上有幾個關於這個問題,但沒有一個似乎解決這個具體問題。除了這個具體問題之外,沒有必要評論比較。

+1

不成熟的優化?大多數數據庫應用程序的瓶頸在於掃描表,而不是解析查詢。你是否盡了一切努力來優化查詢,這真的是唯一可以節省時間的方法嗎? – Barmar

+2

而且您仍然需要使用準備好的語句爲過程提供參數。 – Barmar

+0

@Barmar - 理解,這是我如何繼續。但我想同時知道這個問題的答案。即使它救了我.1%我會接受。 – glutz

回答

0

在很多情況下,性能差異可以忽略不計。

當存儲過程執行多個SQL語句時,使用存儲過程節省的實際性能來自於減少往返數據庫的次數。

如果一個存儲過程包裝單個SQL語句,並且從應用程序中調用它來代替單個SQL語句,那麼使用MySQL不會有任何性能優勢。 (實際上MySQL可能會有更多工作要求調用存儲過程。)

在存儲過程中我們通常會獲得性能提升的地方是減少客戶端執行的語句數量;也就是說,消除了一些「執行」呼叫的聲明。