mssql sqlserver中常见优化存储过程的方法分享


摘要:
下文讲述存储过程编写的常见注意事项
实验环境:sql server 2008 R2


1.存储过程编写名称前缀注意事项

使用非sp开头的存储过程名称,避免出现同系统存储过程命名相同,导致存储过程无法执行的异常情况发生。

2.存储过程动态执行sql脚本,尽量使用sp_executesql

在存储过程中使用 sp_executesql执行sql脚本,可以使sqlserver缓存执行计划,加快sql编译速度,所以在存储过程中,我们应该尽量采用
sp_executesql替换exec动态执行脚本。


3.存储过程开头使用nocount on关键字

在存储过程开头使用 set noconut on关键字,可避免存储过程返回额外的信息,减少IO输出。


4.存储过程中表访问最好加上表Schema

在存储过程中访问表时,加上表Schema可以加快表检索,减少sql引擎访问缓存的次数,
也可避免用户无法检索到Schema时,产生的错误信息。

5.存储过程中避免使用长事务

在存储过程编写中,事务会锁定相应的表,我们尽量使每次事务短,减少锁表时间,加大存储过程对大并发的支持力度。


6.慎用游标

游标每次都会查询表,增大了对IO的访问次数,加大服务器负担,所以必须少使用游标

7.使用try catch捕捉sql错误信息

begin try 
    begin tran 
        /*sql脚本*/
    commit 
end try 
begin catch 
     /*输出错误信息*/
    rollback 
end catch