`
chengxianju
  • 浏览: 256633 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

SQL Server 优化存储过程的七种方法[转载]

阅读更多

SQL Server 优化存储过程的七种方法

 

优化存储过程有很多种方法,下面介绍最常用的7种。

1.使用SET NOCOUNT ON选项

我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数。使用SET NOCOUNT ON后,除了数据集就不会返回额外的信息了,减小网络流量。

2.使用确定的Schema

在使用表,存储过程,函数等等时,最好加上确定的Schema。这样可以使SQL Server直接找到对应目标,避免去计划缓存中搜索。而且搜索会导致编译锁定,最终影响性能。比如select * from dbo.TestTable比select * from TestTable要好。from TestTable会在当前Schema下搜索,如果没有,再去dbo下面搜索,影响性能。而且如果你的表是csdn.TestTable的话,那么select * from TestTable会直接报找不到表的错误。所以写上具体的Schema也是一个好习惯。

3.自定义存储过程不要以sp_开头

因为以sp_开头的存储过程默认为系统存储过程,所以首先会去master库中找,然后在当前数据库找。建议使用USP_或者其他标识开头。

4.使用sp_executesql替代exec

原因在Inside Microsoft SQL Server 2005 T-SQL Programming书中的第四章Dynamic SQL里面有具体描述。这里只是简单说明一下:sp_executesql可以使用参数化,从而可以重用执行计划。exec就是纯拼SQL语句。

5.少使用游标

可以参考Inside Microsoft SQL Server 2005 T-SQL Programming书中的第三章Cursors里面有具体描述。总体来说,SQL是个集合语言,对于集合运算具有较高的性能,而Cursors是过程运算。比如对一个100万行的数据进行查询,游标需要读表100万次,而不使用游标只需要少量几次读取。

6.事务越短越好

SQL Server支持并发操作。如果事务过多过长,或是隔离级别过高,都会造成并发操作的阻塞,死锁。此时现象是查询极慢,同时cup占用率极低。

7.使用try-catch来处理错误异常

SQL Server 2005及以上版本提供对try-catch的支持,语法为:

begin try
      ----your code
end try
begin catch
       --error dispose
end catch

一般情况可以将try-catch同事务结合在一起使用。

begin try
    begin tran
        --select
        --update
        --delete
        --…………
    commit
end try
begin catch
    --if error
    rollback
end catch

 

分享到:
评论

相关推荐

    sqlserver数据库优化总结的资料

    在提供的压缩文件中,"SQLSERVER 2005管理与开发 优化SQL Server数据库(转载).mht"可能是关于SQL Server 2005的管理与优化的综合文章,包含了很多实践经验和技巧;"SQL优化.xlsx"可能是对SQL查询优化的实例或数据...

    sqlserver学习资料(转载!)

    SQL Server是一款由微软开发的关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。这篇学习资料集合了大师级人物的智慧结晶,对于想要深入理解和掌握SQL Server的人来说是一份宝贵的资源。 1. SQL ...

    SQL笔试题(转载的)

    13. **性能优化**:包括查询优化、索引优化、存储过程优化等,以提升数据库的响应速度和整体性能。 这些基本概念和操作构成了SQL Server的基础知识框架。通过《2011 SQL笔试题》这样的练习材料,学习者可以测试并...

    工资管理系统

    1. 数据存储:SQL Server是一个流行的数据库管理系统,用于存储和管理工资相关的所有数据,如员工信息、职位等级、工作小时、奖金、扣款等。通过创建表格(表),我们可以定义数据结构,如员工表、工资详情表等。 2...

    【数据库原理】MyShop 商城数据库设计(SQL server)

    声明:未经允许,请勿转载 MyShop商城是一个在线购物平台,致力于提供便捷的购物体验。为了满足用户需求,商城需要一个可靠、高效的数据库系统来管理商品、用户和订单信息。数据库系统应具备性能、可靠性和扩展性,...

    本人提供SQL语句大全(转载) 12009年04月28日 星期二 19:35SQL语句大全(转载)

    - 使用数据库内置函数和存储过程来提高执行效率。 综上所述,SQL作为数据库操作的核心语言,其语法的灵活运用和查询的优化是数据库管理和开发中不可忽视的重要环节。通过对上述知识点的理解和掌握,可以有效地提升...

    jsp论坛—别的网站转载的

    2. **数据持久化**:论坛的帖子、评论等内容需要存储在数据库中,因此涉及SQL查询、事务管理以及数据库设计,如表结构、索引优化等。 3. **模板引擎**:JSP自身可以作为模板引擎,但现代开发中常采用FreeMarker、...

    勤工助学管理系统,转载来的。delphi

    在使用Delphi开发过程中,开发者会利用其强大的组件库创建用户界面,通过ADO(ActiveX Data Objects)或者DBExpress等技术连接数据库,如SQL Server或Firebird,实现数据的存储和查询。同时,Delphi的编译器能生成...

    MYSQL培训经典教程(共两部分) 2/2

    数据库优化 177 8.1 索引的使用 178 8.1.1索引对单个表查询的影响 ...过程检查表列 186 8.2.3 总结 187 8.3 SQL查询的优化 187 8.3.1 使用EXPLAIN语句检查SQL语句 187 8.3.2 SELECT 查询的速度 188...

    MYSQL培训经典教程(共两部分) 1/2

    数据库优化 177 8.1 索引的使用 178 8.1.1索引对单个表查询的影响 ...过程检查表列 186 8.2.3 总结 187 8.3 SQL查询的优化 187 8.3.1 使用EXPLAIN语句检查SQL语句 187 8.3.2 SELECT 查询的速度 188...

    制作第一个页面 欢迎您进入.Net启动运行

    √(vs200581) 88. 玩转VS2005环境中的Ado.Net √(vs200582) 89. 简单的SQL增、删、改 语句构造√(vs200583) 90. ObjecjDataSource√(vs2005084) 91. Cammand重点和DATASET断开更新√(vs2005085)...

    GridView使用技巧一

    √(vs200581) 88. 玩转VS2005环境中的Ado.Net √(vs200582) 89. 简单的SQL增、删、改 语句构造√(vs200583) 90. ObjecjDataSource√(vs2005084) 91. Cammand重点和DATASET断开更新√(vs2005085)...

    GridView使用技巧二

    √(vs200581) 88. 玩转VS2005环境中的Ado.Net √(vs200582) 89. 简单的SQL增、删、改 语句构造√(vs200583) 90. ObjecjDataSource√(vs2005084) 91. Cammand重点和DATASET断开更新√(vs2005085)...

Global site tag (gtag.js) - Google Analytics