存儲過程的優缺點及適宜使用的場合詳解
我們知道,存儲過程在數據庫操作中的使用是非常廣泛的。它具有速度快、程序簡單、可重復使用、安全性高等特點,那么什么時候使用存儲過程是比較適合的呢?本文我們就來介紹這一部分內容,希望能夠對讀者有所幫助。
當一個事務涉及到多個SQL語句時或者涉及到對多個表的操作時就要考慮用存儲過程;當在一個事務的完成需要很復雜的商業邏輯時(比如,對多個數據的操作,對多個狀態的判斷更改等)要考慮;還有就是比較復雜的統計和匯總也要考慮,但是過多的使用存儲過程會降低系統的移植性。
為了系統的控制方便,例如當系統進行調整時,這是只需要將后臺存儲過程進行更改,而不需要更改客戶端程序。也無需重新安裝客戶端應用程序。
存儲過程不僅僅適用于大型項目,對于中小型項目,使用存儲過程也是非常有必要的。
存儲過程的威力和優勢:
1.存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
2.當對數據庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的SQL語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。
3.存儲過程可以重復使用,可減少數據庫開發人員的工作量。
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。
存儲過程的優點:
1.速度快。尤其對于較為復雜的邏輯,減少了網絡流量之間的消耗。
如果有的過程和函數達到了幾百行,一個微型編譯器,相信用程序就更麻煩了。
2.寫程序簡單,采用存儲過程調用類,調用任何存儲過程都只要1-2行代碼。
3.升級、維護方便。
4.調試其實也并不麻煩,可以用查詢分析器。
5.如果把所有的數據邏輯都放在存儲過程中,那么asp.net只需要負責界面的顯示功能,出錯的可能性最大就是在存儲過程。一般情況下就是這樣。
存儲過程的缺點:
1.可移植性差,我一直采用sql server開發,可是如果想賣自己的東西,發現自己簡直就是在幫ms賣東西,呵呵。想換成mysql,確實移植麻煩。
2.采用存儲過程調用類,需要進行兩次調用操作,一次是從sql server中取到過程的參數信息,并且建立參數;第二次才是調用這個過程。多了一次消耗。
不過這個缺點可以在項目開發完成,過程參數完全確定之后,把所有過程參數信息倒入到一個xml文件中來提高性能。
當一個業務同時對多個表進行處理的時候采用存儲過程比較合適。
- 使用存儲過程在一般情況下會提高性能,因為數據庫優化了存儲過程的數據訪問計劃并應用緩存方便以后的查詢;
- 存儲過程單獨保護存在于數據庫中。客戶端可以獲取權限執行存儲過程,而不需要對底層的具體表設置其他的訪問權限;
- 存儲過程會使得維護起來更加方便,因為通常修改一個存儲過程要比在一個已經發布的組件中修改SQL語句更加方便;
- 存儲過程給底層數據格式增添了額外的抽象層。使得使用存儲過程的客戶端對存儲過程的實現細節以及對底層數據格式是隔離獨立的;
- 存儲過程能夠緩解網絡帶寬,因為可以批量執行SQL語句而不是從客戶端發送超負載的請求。
復雜的數據處理用存儲過程,如有些報表處理。
多條件多表聯合查詢,并做分頁處理,用存儲過程也比較適合。
適當的使用存儲過程,能夠提高我們SQL查詢的性能,以便于提高我們的工作效率。本文就介紹這么多了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】