(原創) 何時該使用Stored Procedure? (Database) (SQL Server) (T-SQL)

Abstract
目前分散式開發,比較不強調使用Stored Procedure,而是Data Access Layer僅做單純存取SQL Server,邏輯則寫在BLL,若你有以下的需求,則Stored Procedure仍然適合你。

Introduction
1.
SQL Script Reuse
使用Class寫法僅能達到C#部分的程式碼重複使用,若要達到SQL部分的程式碼重複使用,就必須將SQL寫在Stored Procedure裡。

2.SQL Script Reuse
當資料庫需給其他Developer使用時,只要將Stored Procedure給他,告訴他該Stored Procedure的用法即可,不需將整個資料庫的架構解釋給他聽。

3.安全性
當資料庫需給其他Developer使用時,不需開放整個Table的讀取或寫入權限,只需開放Stored Procedure的使用權限即可,因此對權限可以有較嚴謹控制。

4.執行速度:每次使用Ad Hoc Query時,SQL Server的CPU time非常高,需重新Parse,且重新製作Execution Plan,但使用Stored Procedure時,只有第一次執行時CPU time較高,此時為了製作Execution Plan,並將其Cache起來,當第二次執行該Stored Procedure時,CPU time幾乎為0,可重複使用該Execution Plan。

5.方便Debug
可單獨對Strored Procedure做Unit Test。

6.方便使用Profiler做Tuning
可單獨對Stored Procedure做Index Tuning。

你可能感兴趣的:(SQL Server)