程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 分析存儲過程的使用場景

分析存儲過程的使用場景

編輯:關於SqlServer

當一個事務涉及到多個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語句而不是從客戶端發送 超負載的請求。

復雜的數據處理用存儲過程,如有些報表處理,多條件多表聯合查詢,並做分 頁處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved