`
gwh_08
  • 浏览: 335676 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SET NOCOUNT ON 作用

 
阅读更多

在存储过程中,经常用到SET NOCOUNT ON;

作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。

当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;

即使当SET NOCOUNT ON 时候,也更新@@RowCount;

当SET NOCOUNT on时候,将不向客户端发送存储过程每个语句的DONE_IN_proc消息,如果存储过程中包含一些并不返回实际数据的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;

SET NOCOUNT 指定的设置时在执行或运行时候生效,分析时候不生效。默认值:OFF

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

还有一种说法:

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

 

分享到:
评论

相关推荐

    SQL SERVER 2008 开发系列

    通过查看执行计划,可以看到只检索了`IX_Sales_SalesOrderHeader_Online`索引,说明此索引已经覆盖了查询需求。 #### 二、索引包含列应用 除了筛选索引之外,SQL Server 2008还引入了索引包含列的概念。包含列...

    关于sqlserver存储过程中单个或批量数据的增加、删除、修改操作方法.pdf

    SET NOCOUNT ON; DECLARE @EditType NVARCHAR(100); SET @EditType = 'ADD'; DECLARE @ForNum INT; SET @ForNum = 1; DECLARE @L_id NVARCHAR(50), @L_name NVARCHAR(50); -- 解析参数并插入数据 ...

    sybase sql执行慢,如何调优

    1、执行下述代码,查看当前进程执行内容 ...SET NOCOUNT ON SET SHOWPLAN ON SET NOEXEC ON GO 具体代码 GO SET NOCOUNT OFF SET SHOWPLAN OFF SET NOEXEC OFF GO 4、执行计划显示索引使用不合理导致全表扫

    SQL语句调优

    使用 SET NOCOUNT ON 可以提高 T-SQL 代码速度的现象。这个命令允许你禁止所有在你的会话事务中的子查询的信息,直到你发出 SET NOCOUNT OFF。这个选项不只在于其输出的装饰效果。它减少了从服务器端到客户端传递的...

    instead of 触发器

    SET NOCOUNT ON IF (NOT EXISTS (SELECT P.SSN FROM Person P, inserted I WHERE P.SSN = I.SSN)) INSERT INTO Person SELECT SSN,Name,Address,Birthdate,Comment FROM inserted ELSE INSERT INTO ...

    Northwind脚本

    SET NOCOUNT ON GO USE master GO if exists (select * from sysdatabases where name='Northwind') drop database Northwind go DECLARE @device_directory NVARCHAR(520) SELECT @device_directory = ...

    在MySQL中同时查找两张表中的数据的示例

    这个例子里面我们从两个表中取出头两行,然后合并到一个表中。  在现实中我们常常会遇到这样的情况,... SET NOCOUNT ON --指示存储过程不返回查询影响的行数 DECLARE @col1c varchar(20),@col2c varchar(20), @inde

    SQL Server 2005分页显示存储过程

    SET NOCOUNT ON; DECLARE @timediff DATETIME; DECLARE @sql NVARCHAR(500); SELECT @timediff = GETDATE(); SET @sql = 'SELECT TOP ' + STR(@pageSize) + ' * FROM tb_TestTable WHERE (ID NOT IN (SELECT ...

    select into和insert into select使用方法

    - `SET NOCOUNT ON` 和 `SET NOCOUNT OFF` 是为了控制是否返回行计数信息,这在实际应用中可以提高效率。 #### 2. `INSERT INTO SELECT FROM` `INSERT INTO SELECT FROM`语句则是在已存在的表中插入数据。这种...

    如何查看SQLServer数据库每个表占用的空间大小

    CREATE PROCEDURE [dbo] [sys viewTableSpace] AS BEGIN SET NOCOUNT ON; CREATE TABLE [dbo] #tableinfo 表名 [varchar] 50 COLLATE Chinese PRC CI AS NULL 记录数 [int] NULL

    sqlserver的存储过程与 where in 多值参数

    SET NOCOUNT ON; DECLARE @sql NVARCHAR(MAX) = 'DELETE FROM xxx WHERE id IN (' + @idList + ')' EXEC sp_executesql @sql END ``` 在这个例子中,`@idList`应该是一个由逗号分隔的值列表,如'1,2,3,4'。调用...

    sql优化处理

    8. **`SET NOCOUNT ON`**:在存储过程中设置`SET NOCOUNT ON`会关闭查询结果集的计数,意味着`@@ROWCOUNT`将返回0。在需要精确控制行数的情况下,需要避免使用`SET NOCOUNT ON`或者在需要时手动重置。 9. **使用`...

    计算机等考三级数据库基础:一个游标的sqlserver存储过程.docx

    `set nocount on`用于关闭自动返回受影响行数的功能,这样可以提高性能,因为某些操作可能不需要知道影响了多少行。 接下来,存储过程声明了一个局部变量`@P1`,它将作为游标的标识符。`sp_cursoropen`系统存储过程...

    优化SQL Server的内存占用之执行缓存

    SET NOCOUNT ON DECLARE @i INT, @count INT, @sql nvarchar(4000) SET @i = 20000 WHILE @i BEGIN SET @sql = 'SELECT @count=count(*) FROM P_Order WHERE MobileNo = ' + cast( @i as varchar(10) ) EXEC sp_...

    五种提高 SQL 性能的方法

    一种更高效的替代方案是在 `INSERT` 操作之前设置 `SET NOCOUNT ON` 并且在 `INSERT` 之后立即执行 `SELECT @@IDENTITY`,这样可以减少不必要的网络往返次数,并提高整体性能。 #### 示例代码: ```sql SET NOCOUNT...

    SQL Server 优化存储过程的七种方法.doc

    1. **使用SET NOCOUNT ON选项**: 当在存储过程中使用SELECT语句时,SQL Server默认会返回受影响的行数。通过设置SET NOCOUNT ON,可以关闭这个返回,减少不必要的网络通信,从而提高性能。 2. **使用确定的Schema...

    ADO调用分页查询存储过程的实例讲解

    --set nocount on --开启SqlServer消息 go create proc usp_getMyStudentsDataByPage --输入参数 @pagesize int=7,--每页记录条数 @pageindex int=1,--当前要查看第几页的记录 --输出参数 @recordcount int output,-...

    分页存储过程

    4. **控制计数**:使用`SET NOCOUNT ON`和`SET NOCOUNT OFF`来控制执行SQL语句时是否显示计数消息,从而优化性能。 #### 四、代码解析 下面对存储过程中的关键代码进行详细解释: 1. **参数设置**: ```sql ...

    sql分页

    7. **禁用/启用NOCOUNT**:`SET NOCOUNT ON`和`SET NOCOUNT OFF`用于控制是否返回行数信息。 #### 六、总结 通过上述存储过程,我们实现了基于游标的SQL分页功能。这种方法不仅能够有效地管理大量数据,还具有较高...

    SqlServer GO命令循环使用实例代码

    SET NOCOUNT ON; GO INSERT INTO dbo.T1 DEFAULT VALUES; GO 100 总结 以上所述是小编给大家介绍的SqlServer GO命令循环使用实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。...

Global site tag (gtag.js) - Google Analytics