一、什么情況下才應該使用存儲過程而不是用程序來對數據做操作
1.如果處理的邏輯不是太復雜,也就是邏輯的時間復雜度不高,可以放進存儲過程,因為如果太復雜(例如有很多巨耗CPU資源的操作),會加大數據庫服務器的壓力,從而影響數據庫服務器對其它請求的響應。而本應以運行程序邏輯為本職的應用服務器,卻晾在一旁打醬油,你認為這樣真的好嗎?
2.相反,如果邏輯不太復雜,但是需要訪問的數據量是巨量的,那么就更適合放進存儲過程處理(注意處理好表鎖定的問題),因為當你讀取上千萬條件數據并把它們傳進應用服務器再來處理除了對教據庫服務器有壓力,對應用外理哭的內存壓力也很大的,倒不如直接在數據庫服務器外理完它。這種情況時,盡管在讀取大數據量時,其實無論用哪種方法,數據庫服務器的磁盤IO承受的玉力都是一樣的,但如果放在代碼里處理,也就是需要傳到應用服務器端處理,那么就會對網絡IC也形成了壓力。如果這種操作頻繁的話,會對網絡IC也形成了壓力。如果這種操作頻繁的話,會對網絡10形成壓力脈沖。有可能影響同一網絡上的其它應用。
延伸閱讀:
二、中小型項目使用存儲過程的優勢
存儲過程不僅僅適用于大型項目,對于中小型項目,使用存儲過程也是非常有必要的。其威力和優勢主要體現在:
1.存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
2.當對數據庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL 語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。
3.存儲過程可以重復使用,可減少數據庫開發人員的工作量。
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。