SQL Server中通过设置SET NOCOUNT来优化存储过程
来源:互联网 发布:有关网络暴力的法律 编辑:程序博客网 时间:2024/06/07 23:54
本文摘自:http://database.51cto.com/art/201108/283177.htm
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的用法的介绍就介绍到这里了,希望本次的介绍能够对您有所收获!
- SQL Server中通过设置SET NOCOUNT来优化存储过程
- sql server 存储过程中 SET NOCOUNT ON是什么意思?
- sql server 设置SET NOCOUNT
- 使用SET NOCOUNT优化存储过程
- 使用SET NOCOUNT优化存储过程
- 使用SET NOCOUNT优化存储过程
- ms sql server 存储过程(1)SET NOCOUNT { ON | OFF }实用讲解
- 存储过程 SET NOCOUNT ON
- 存储过程 SET NOCOUNT ON
- sqlserver 存储过程 set nocount on
- 存储过程中的SET NOCOUNT ON
- Sql Server 使用 SET NOCOUNT { ON | OFF}
- sql server SET NOCOUNT ON 作用
- SQL Server 优化存储过程
- 错误 '800a0e78' 存储过程中缺少 set nocount on 导致错误
- 存储过程中的 SET NOCOUNT ON 和SET NOCOUNT OFF是 什么意思?
- SQL SET NOCOUNT ON;
- 存储过程中的 SET NOCOUNT ON 什么意思?
- Powerdesigner设计的PDM导出的数据库中不能体现出外码约束的解决方法
- 读者-写者问题
- Error LNK2001 无法解析的外部符号的几种情况及解决办法
- 搭开发环境
- 约瑟夫问题
- SQL Server中通过设置SET NOCOUNT来优化存储过程
- 莫比乌斯反演学习小记
- Eclipse蛋疼的变量自动补全类名解决方法
- {转载}——时间复杂度和空间复杂度详解
- CameraApp编写启动篇
- poj 2886 Who Gets the Most Candies?*
- RabbitMQ学习(六).NET Client之RPC
- Linux内核时间管理子系统——timekeeping
- 【mDNS】本地DNS解析协议