為什么要用存儲過程
幾個去 IBM 面試的兄弟回來抱怨:去了好幾個不同的 IBM
項目組,幾乎每個面試官問到數據庫的時候都要問用沒用過存儲過程,煩人不?大家去面的程序員,又不是
DBA,以前的項目都沒有用到存儲,不照樣運行的好好的?
存儲過程真的那么重要嗎,它到底有什么好處呢?
筆者認為,存儲過程說白了就是一堆 SQL 的合并。中間加了點邏輯控制。
但是存儲過程處理比較復雜的業務時比較實用。
比如說,一個復雜的數據操作。如果你在前臺
處理的話。可能會涉及到多次數據庫連接。但如果你用存儲過程的話。就只有一次。從響應時間上來說有優勢。
也就是說存儲過程可以給我們帶來運行效率
提高的好處。
另外,程序容易出現 BUG
不穩定,而存儲過程,只要數據庫不出現問題,基本上是不會出現什么問題的。也就是說從安全上講,使用了存儲過程的系統更加穩定。
數據量小的,或者和錢沒關系的項目不用存儲過程也可以正常運作。mysql
的存儲過程還有待實際測試。如果是正式項目,建議你用 sql server 或 oracle
的存儲過程。數據與數據之間打交道的話,過程會比程序來的快的多。面試官問有沒有用存儲,實際上就是想知道前來面試的程序員到底做過數據量大的項目沒。如
果是培訓出來的,或者小項目小公司出來的,對存儲肯定接觸的少了。
所以,要想進大公司,沒有豐富存儲過程經驗,是不行的。
那么什么時候才可以用存儲?對于數據量不是很大以及業務處理不是很復雜的小項目就無需要了么?
錯。
存儲過程不僅僅適用于大型項目,對于中小型項目,使用存儲過程也是非常有必要的。其威力和優勢主要體現在:
1.存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般 SQL
語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
2.當對數據庫進行復雜操作時(如對多個表進行
Update,Insert,Query,Delete
時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL
語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。
3.存儲過程可以重復使用,可減少數據庫開發人員的工作量。
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。