SQL Server中通过设置SET NOCOUNT来优化存储过程

数据库 SQL Server
本文我们主要对SQL Server数据库中SET NOCOUNT的使用方法以及SET NOCOUNT优化存储过程的操作的介绍,希望能够对您有所帮助。

SQL Server数据库中SET NOCOUNT可以设置查询分析器调试SQL语句时的一些提示信息,由于这些信息对我们来说是没有用处的,如果将其关闭还可以提高SQL语句的执行速度。那么这些信息如何关闭呢?答案是我们可以利用SET NOCOUNT 来控制这些信息,以达到提高程序性能的目的。

MSDN中帮助如下:  

SET NOCOUNT 使返回的结果中不包含有关受Transact-SQL 语句影响的行数的信息。

语法:SET NOCOUNT { ON | OFF }

注释:

当SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当SET NOCOUNT 为OFF 时,返回计数。

即使当SET NOCOUNT 为 ON 时,也更新@@ROWCOUNT 函数。

当SET NOCOUNT 为ON 时,将不给客户端发送存储过程中的每个语句的DONE_IN_PROC 信息。当使用Microsoft SQL Server 提供的实用工具执行查询时,在Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。

权限:SET NOCOUNT 权限默认授予所有用户。

结论:我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。

说明:

1:在查看SQL Server帮助的时候,要注意“权限”这一节,因为某些语句是需要一定的权限的,而我们往往忽略。

2:@@ROWCOUNT是返回受上一语句影响的行数,包括找到记录的数目、删除的行数、更新的记录数等,不要认为只是返回查找的记录数目,而且@@ROWCOUNT要紧跟需要判断语句,否则@@ROWCOUNT将返回0。

3:如果使用表变量,在条件表达式中要使用别名来替代表名,否则系统会报错。

4:在CUD类的操作中一定要有事务处理。

5:使用错误处理程序,用来检查@@ERROR 系统函数的T-SQL语句(IF) 实际上在进程中清除了@@ERROR 值,无法再捕获除零之外的任何值,必须使用SET或SELECT立即捕获错误代码。

关于SQL Server数据库中SET NOCOUNT的用法的介绍就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. SQL Server 2008数据库学习笔记
  2. SQL Server 2005数据库nolock使用详解
  3. SQL Server如何启用Ad Hoc Distributed Queries?
  4. SQL Server 2008用存储过程实现插入更新数据的实例
  5. 含有GROUP BY子句的查询中如何显示COUNT()为0的结果
责任编辑:赵鹏 来源: 火魔网
相关推荐

2010-07-06 14:06:52

SQL Server存

2011-03-31 10:38:28

SQL Server编写优化

2010-07-01 13:42:58

SQL Server存

2010-07-08 17:15:04

SQL Server存

2010-07-19 13:15:39

SQL Server优

2010-11-10 15:36:44

SQL Server存

2011-09-01 15:24:22

SQL Server 存储过程调试

2009-08-06 16:44:06

2010-07-15 12:38:14

SQL Server存

2010-10-22 17:14:03

SQL Server删

2010-11-12 09:18:13

SQL Server存

2011-04-08 09:53:45

Accesssql server存储翻页

2011-08-29 10:55:03

SQL Server分页存储过程优化效率分

2011-03-24 13:38:47

SQL Server 存储分页

2010-11-12 09:46:55

Sql Server存

2010-09-14 10:16:57

sql server

2010-09-14 10:36:23

sql server存

2011-03-28 10:46:36

sql server存储分页

2011-05-20 15:59:06

Oracle存储Sql语句

2011-08-15 15:56:31

SQL Server
点赞
收藏

51CTO技术栈公众号