每次我们在使用查询分析器调试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。

sql server中的 SET NOCOUNT ON 的含义相关推荐

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

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

  2. predicate 列存储索引扫描_在SQL SERVER中导致索引查找变成索引扫描的问题分析

    SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试.总结.归纳. 1:隐式转换会导致 ...

  3. SQL SERVER中什么情况会导致索引查找变成索引扫描

    原文:SQL SERVER中什么情况会导致索引查找变成索引扫描 SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方 ...

  4. 十步优化SQL Server中的数据访问

    故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...

  5. 【转】在SQL Server中通过SQL语句实现分页查询

    在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...

  6. 在SQL Server中分页结果的最佳方法是什么

    如果您还希望获得结果总数(在进行分页之前),那么在SQL Server 2000.2005.2008.2012中对结果进行分页的最佳方法是(性能明智的)? #1楼 最终, Microsoft SQL ...

  7. c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器

    我在SQL Server中使用触发器,该触发器在SQL Server Management Studio的查询窗口中执行查询时按要求工作.触发器的目的是从一个表中获取最新值(其中一个ID对应于插入的I ...

  8. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题 原文:SQL SERVER中用户定义标量函数(scalar user defined fu ...

  9. SQL Server中如何取得刚插入的标识值

    数据库实际应用中,我们往往需要得到刚刚插入 的标志值来往相关表中写入数据.但我们平常得到的真的是我们需要的那个值么? 有时我们会使用 SELECT @@Identity 来获得我们刚刚插入的值,比如下 ...

最新文章

  1. 开源企业IM免费企业即时通讯ENTBOOST V2014.177版本号正式公布
  2. java tomcat mysql_java+tomcat+mysql实现登录界面基本思路
  3. php input多选,利用css3更改input单选和多选样式的方法
  4. Spring Boot 使用常见问题
  5. 特斯拉电动皮卡不太香:预订表现不及3年前的Model 3
  6. 《转》在c/s中,登录成功后如何关闭登录窗体显示主窗体
  7. reactnative资源
  8. 解决python3报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xaa in position 1: ordinal not in ra
  9. AE自带特效中英文对照表
  10. 让工程师拥有一台“超级”计算机——字节跳动客户端编译加速方案
  11. tushare 获取复权数据
  12. Error: Can't resolve 'fs' in (webpack 2配置CSS loadeers)
  13. 从零开始用人工智能预测股票(三、初步实现)
  14. 协方差矩阵和相关矩阵的关系
  15. A. Greatest Convex
  16. 【模拟】变态杀人狂(约瑟夫问题)
  17. python npv 计算公式_PMP知识点总结 -- 净现值(NPV)
  18. stm32采集交流电压信号_基于STM32的交流电压检测.pdf
  19. Android App活动页面
  20. 【c#系列】PDF进行操作-浏览、分割、合并、插入、删除(2)

热门文章

  1. web开发中常用的概念
  2. android 字符串下标,android – 在TextView中为特定字符设置下标和上标?
  3. Scala语言整理(一)
  4. Nginx教程-安装
  5. 宝塔安装sqlserver_宝塔面板for windows 连接mssql2008
  6. ubuntu配置GDB
  7. P1312 Mayan游戏 [模拟][搜索]
  8. android天气查询(一)websevice之ksoap2软件包的使用
  9. 点击按钮修改背景颜色及节点操作隔行变色案例
  10. Android打包(一)