每次我们在使用查询分析器调试SQL语句的时候,通常会看到一些信息,提醒我们当前有多少个行受到了影响,这是些什么信息?在我们调用的时候这些信息有用吗?是否可以关闭呢?

答案是这些信息在我们的客户端的应用程序中是没有用的,这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。

我们可以利用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这样的话,以达到优化存储过程的目的。

还有一种说法:
前台一般是一个返回就当一个结果集, 不管这个返回是结果集, 还是操作的反馈信息.

为了保证前台得到的只是真实的记录集, 而不是反馈信息, 因此得使用 set nocount on
多说两句:

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

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

SET NOCOUNT ON 作用相关推荐

  1. SQLServer 存储过程

    存储过程 定义:存储过程有时候也称为sproc,它是真正的脚本--或者更准确的说,它是批处理--它存储与数据库中而不是单独的文件中.存储过程中有输入参数,输出参数以及返回值等. 创建存储过程:基本语法 ...

  2. 数据库索引的作用和优点缺点以及索引的11中用法

    为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能.  第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.  第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因. ...

  3. NOCOUNT如何影响ADO.NET(SET NOCOUNT ON的性能问题)

    How NOCOUNT affects ADO.NET一文中提到: Previously, in Classic ASP and ADO, NOCOUNT was most commonly a fa ...

  4. nocount on_在SQL Server中设置NOCOUNT ON语句的用法和性能优势

    nocount on Have you ever noticed SET NOCOUNT ON statement in T-SQL statements or stored procedures i ...

  5. SQL Server中Rowcount与@@Rowcount的用法 和set nocount on 也会更新@@Rowcount

    rowcount的用法: rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例, set rowcount 10 select * from 表A 这样的查询只 ...

  6. SET NOCOUNT { ON | OFF }

    当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数) SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数. 当 SET NOC ...

  7. sql-索引的作用(超详细)

    此文转自:https://www.cnblogs.com/hyd1213126/p/5828937.html (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SER ...

  8. Sql Server 使用 SET NOCOUNT { ON | OFF}

    作用:阻止在结果中返回受 Transact-Sql 影响的行数. 应用:对于一些存储过程或者触发器不返回实际数据(如 插入和删除操作),或者不需要获得 查询得到的数量,那么设置    SET NOCO ...

  9. 数据库索引的作用和优点缺点以及索引的11种用法

    为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性. 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因. 第 ...

最新文章

  1. 我是一个SDN控制器
  2. linux shell 调试 检查 脚本
  3. 论转发与重定向参数传递问题(jsp+servlet项目开发遇到的问题)
  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配与 Regex 迭代器类型
  5. php正则匹配价格,关于php:Laravel正则表达式验证价格或空
  6. 合肥.NET俱乐部第二期技术沙龙活动预告
  7. python总结函数图像_PIL使用小结(crop和paste函数)
  8. 解决ios8下coreData没有NSPersistentContainer的问题
  9. linux 如何查看fb中分辨率_西门子S71200,如何在FB块中使用操作定时器?
  10. linux spidev 应用_Linux下SPI驱动的移植和应用程序的测试
  11. 乌班图配置mysql Java_从零开始的告警平台(1)
  12. SQL查询语句-返回名称的分类
  13. MyBatis创建视图
  14. 超详细的AI深度学习“花书”笔记(附中英文电子书资料)
  15. 【Linux】 浅谈 NCSI 及其在 Linux 上的实现
  16. springboot Validation
  17. Java - 过滤器有哪些作用和用法?
  18. 极限编程XP 的12个最佳实践
  19. 【编程原则】预则立,不预则废
  20. Python 文件IO操作

热门文章

  1. 倒排索引统计与 Python 字典
  2. MongoDB(一):简介
  3. 世博、城市云和2020
  4. 再度剖析AD账户新旧密码同时可用的问题
  5. BCH开发Cashscript语言,可构建自主决策交易特定方案
  6. 吃亏是福--创业[3]
  7. php 面向对象 创建OOP
  8. Windows下的鱿鱼(Squid)
  9. 微信小应用,又一大神,音乐播放器
  10. smartrpc编译构建