(原創) 何時該使用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。