博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server中通过设置SET NOCOUNT来优化存储过程
阅读量:5825 次
发布时间:2019-06-18

本文共 1008 字,大约阅读时间需要 3 分钟。

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的用法的介绍就介绍到这里了,希望本次的介绍能够对您有所收获!

转载于:https://www.cnblogs.com/12go/articles/2174795.html

你可能感兴趣的文章
Dubbo点滴(2)之集群容错
查看>>
Zend Framework 自动加载类的实现方法
查看>>
使用Logrotate来管理系统日志
查看>>
机房管理系列之机房温湿度
查看>>
【PMP】Head First PMP 学习笔记 第七章 成本管理
查看>>
全球众多IT巨头竞相抢占云计算市场
查看>>
这台人形机器人曾登上时尚杂志封面 最近还参加了联合国大会
查看>>
mysql源码安装
查看>>
APNS MySQL Tables
查看>>
CEGUI中回车键,退格键的响应
查看>>
Double Kill!何恺明包揽全部两项最佳论文奖!清华北航上交论文活跃度名列前十...
查看>>
任正非:将打造华为统一的AI平台,2018首先在GTS部署
查看>>
货车帮CTO冯亮:利用阿里云服务,发展物流产业互联网
查看>>
iOS代码规范
查看>>
阿里云助艾尔肯实现维吾尔族音乐梦
查看>>
调查:OpenStack日渐成熟 部署率上涨44%
查看>>
具备这些特性 说明你是个优秀程序员
查看>>
富士通全面升级ETERNUS存储系统
查看>>
大数据时代的安全边界
查看>>
云栖大会首开Tech Insight首场爆棚
查看>>