sql 儲存過程的的好處和缺點

2021-06-08 07:12:49 字數 1874 閱讀 9920

此內容均來自網際網路

儲存過程(stored procedure)是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫。中使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。

儲存過程是sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數、有條件執行以及其它強大的程式設計功能。儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個sql語句快。

儲存過程的優點:

1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。

2.當對資料庫進行複雜操作時(如對多個表進行update,insert,query,delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

3.儲存過程可以重複使用,可減少資料庫開發人員的工作量

4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權

缺點:

1.如果更改範圍大到需要對輸入儲存過程的引數進行更改,或者要更改由其返回的資料,則您仍需要更新程式集中的**以新增引數、更新 getvalue() 呼叫,等等,這時候估計比較繁瑣了。

2.可移植性差

由於儲存過程將應用程式繫結到 sql server,因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性。

優點:

1.由於應用程式隨著時間推移會不斷更改,增刪功能,t-sql過程**會變得更複雜,storedprocedure為封裝此**提供了乙個替換位置。

2.執行計畫(儲存過程在首次執行時將被編譯,這將產生乙個執行計畫-- 實際上是 microsoft sql server為在儲存過程中獲取由 t-sql 指定的結果而必須採取的步驟的記錄。)快取改善效能。

........但sql server新版本,執行計畫已針對所有 t-sql 批處理進行了快取,而不管它們是否在儲存過程中,所以沒比較優勢了。

3.儲存過程可以用於降低網路流量,儲存過程**直接儲存於資料庫中,所以不會產生大量t-sql語句的**流量。

4.使用儲存過程使您能夠增強對執行計畫的重複使用,由此可以通過使用遠端過程呼叫 (rpc) 處理伺服器上的儲存過程而提高效能。rpc 封裝引數和呼叫伺服器端過程的方式使引擎能夠輕鬆地找到匹配的執行計畫,並只需插入更新的引數值。

5.可維護性高,更新儲存過程通常比更改、測試以及重新部署程式集需要較少的時間和精力。

6.**精簡一致,乙個儲存過程可以用於應用程式**的不同位置。

7.更好的版本控制,通過使用 microsoft visual sourcesafe 或某個其他源**控制工具,您可以輕鬆地恢復到或引用舊版本的儲存過程。

8.增強安全性:

a、通過向使用者授予對儲存過程(而不是基於表)的訪問許可權,它們可以提供對特定資料的訪問;

b、提高**安全,防止 sql注入(但未徹底解決,例如,將資料操作語言--dml,附加到輸入引數);

c、sqlparameter 類指定儲存過程引數的資料型別,作為深層次防禦性策略的一部分,可以驗證使用者提供的值型別(但也不是萬無一失,還是應該傳遞至資料庫前得到附加驗證)。

缺點:

1.如果更改範圍大到需要對輸入儲存過程的引數進行更改,或者要更改由其返回的資料,則您仍需要更新程式集中的**以新增引數、更新 getvalue() 呼叫,等等,這時候估計比較繁瑣了。

2.可移植性差

由於儲存過程將應用程式繫結到 sql server,因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性。如果應用程式的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定於 rdbms 的中間層中可能是乙個更佳的選擇。

儲存過程和sql語句的優缺點

答 儲存過程的優缺點 優點 1.由於應用程式隨著時間推移會不斷更改,增刪功能,t sql過程 會變得更複雜,storedprocedure為封裝此 提供了乙個替換位置。2.執行計畫 儲存過程在首次執行時將被編譯,這將產生乙個執行計畫 實際上是 microsoft sql server為在儲存過程中獲...

儲存過程的優點和缺點

儲存過程是一組予編譯的sql語句 它的優點 1.允許模組化程式設計,就是說只需要建立一次過程,以後在程式中就可以呼叫該過程任意次。2.允許更快執行,如果某操作需要執行大量sql語句或重複執行,儲存過程比sql語句執行的要快。3.減少網路流量,例如乙個需要數百行的sql 的操作有一條執行語句完成,不需...

使用儲存過程的好處

在這裡就直接上菜 1.減少了客戶機與伺服器之間的網路使用率 1 資料庫伺服器執行儲存過程之後,在網路中僅僅傳送客戶機應用程式需要的資料,減少了網路的使用率。2 應用程式執行每個sql語句都要跨網路兩次,儲存過程可以將sql語句集中在一起,從而每一組sql語句只需要跨網路兩次。儲存過程中集中在一起的s...