(原創) 何時該使用Stored Procedure? (Database) (SQL Server) (T-SQL)
2007-06-07 14:18
501 查看
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。
目前分散式開發,比較不強調使用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。
相关文章推荐
- (原創) 如何在T-SQL中寫出類似VFP中Append From的語法? (Database) (SQL Server) (T-SQL)
- 使用SQL Database Migration Wizard把SQL Server 2008迁移到Windows Azure SQL Database
- (原創) 如何在T-SQL中寫出類似VFP中IIF()的語法? (Database) (SQL Server) (T-SQL)
- SQL Server ->> 使用Azure Active Directory Authentication连接到Azure SQL Database
- Azure SQL Database (20) 使用SQL Server 2016 Upgrade Advisor
- 使用T-SQL将数据设置为在线或者离线(SQL SERVER – T-SQL Script to Take Database Offline – Take Database Online)
- (原創) 如何用T-SQL產生亂數? (Database) (SQL Server) (T-SQL)
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
- SQL SERVER 2008R2sp1配置Database Mail –用SQL 数据库发邮件
- 使用T-SQL导入多个文件数据到SQL Server中
- SQL语句实现查询SQL Server内存使用状况
- Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
- 使用 Microsoft JDBC Driver for SQL Server 连接到SQL Server的5种方式
- Sql2005性能工具(SQL Server Profiler和数据库引擎优化顾问)使用方法详解
- 如何在Windows Azure VM上的SQL Server和Windows Azure SQL Database两者中做出选择
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- sql server 2005/2008 设置 sql身份验证 和 sa空密码(像sql2000一样使用)(转载)
- html5 使用web SQL database简单实例
- 在SQL Server中创建用户角色及授权(使用SQL语句)