- 浏览: 257323 次
文章分类
- 全部博客 (395)
- Tech (0)
- [随笔分类]心情 (95)
- [随笔分类]技术 (112)
- [随笔分类]管理心得 (13)
- [随笔分类]Code SOP (5)
- [随笔分类]望图知意 (11)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (8)
- [随笔分类]重构代码 (1)
- [随笔分类]童童 (2)
- Program (1)
- [随笔分类]看你知道不知道 (1)
- [网站分类]4.其他技术区 (31)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (21)
- [网站分类]9.求职招聘区(个人求职、企业招聘) (0)
- [随笔分类]昨日关注 (15)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (3)
- [随笔分类]一步一个脚印 (2)
- [网站分类]网站管理区(网站管理方面的疑问、建议、意见, 寻求管理员帮助) (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (3)
最新评论
每次我们在使用查询分析器调试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这样的话,以达到优化存储过程的目的。
多说两句:
1:在查看SqlServer的帮助的时候,要注意“权限”这一节,因为某些语句是需要一定的权限的,而我们往往忽略。
2:@@ROWCOUNT是返回受上一语句影响的行数,包括找到记录的数目、删除的行数、更新的记录数等,不要认为只是返回查找的记录数目,而且@@ROWCOUNT要紧跟需要判断语句,否则@@ROWCOUNT将返回0。
3:如果使用表变量,在条件表达式中要使用别名来替代表名,否则系统会报错。
4:在CUD类的操作中一定要有事务处理。
5:使用错误处理程序,用来检查 @@ERROR 系统函数的 T-SQL 语句 (IF) 实际上在进程中清除了 @@ERROR 值,无法再捕获除零之外的任何值,必须使用 SET 或 SELECT 立即捕获错误代码。
发表评论
-
打包应该注意MDAC的安装次序
2005-11-14 16:06 961MDAC得打包通常都是很讨厌得,一直没有太好的办法。以前得解决 ... -
不要忽视细节,由调用一个SqlServer系统存储过程想到的
2005-11-22 13:21 624今天在调用SqlServer中的系统存储过程sp_droplo ... -
小毛病,大问题
2005-11-24 11:19 620今天用户抱怨,为什么数据库中条目的计数越来越大,而且清空数据库 ... -
CMD命令也要用好
2005-11-30 13:30 994以前一些程序需要执行 ... -
一步一个脚印-产品升级随笔(1)-vision
2005-12-18 08:17 679产品的维护和升级总是困扰着我,犯过很多的错误,吃过很多的亏,如 ... -
一步一个脚印-产品升级随笔(4)-波浪
2005-12-30 11:10 698产品的升级不是一次就可以完成的,需求会像洪水一样永远都不会停止 ... -
国民党的800万军队不是一天消灭的
2006-01-09 15:58 620这几天又去了一趟京城,刚刚回到家里,特别的疲惫,昨天美美的在家 ... -
还不如扔掉
2006-01-12 12:42 587周六、周日打算搬回学校的单身宿舍了,把租的房子退掉,但是屋子里 ... -
看你知道不知道之-全局对象
2006-02-10 12:49 653这几天在整理类库,想通过VB6来提供全局函数,将公司常用的函数 ... -
看你知道不知道之-制作数据字典
2006-02-10 17:49 1016这部分内容和VB6的关系不大,但是确是困扰我的一个问题。 这几 ... -
看你知道不知道之-为进程内部件设置基地址
2006-02-13 11:17 694在用Project Analyzer 进行 ... -
看你知道不知道之-Call转义序列
2006-02-14 13:00 654今天在整理代码的时候,需要修改一个函数,使这个函数可以通过AD ... -
看你知道不知道之-你注意Where子句的次序了吗?
2006-02-16 08:12 605这个系列越来越多的是和SQL语句相关的问题了,因为这段时间工作 ... -
看你知道不知道之-用好sp_depends
2006-02-21 12:25 1141前几天检查一个兄弟写的存储过程,我想知道这个存储过程到底涉及到 ... -
今天20,明天21
2006-03-06 15:58 565这几天一直封闭,昨天刚刚放出来,感觉十分的疲惫。在封闭的过程中 ... -
重构代码-随笔(1)
2006-03-09 10:32 577原始代码: If txt ... -
干这行最重要的是要坐住板凳
2006-03-12 20:40 726我们周五的时候刚刚辞退的一个试用期员工,给我在QQ留言,内容大 ... -
看你知道不知道之-别惹我Msgbox的Title
2006-03-13 19:40 606在VB6中,MsgBox是比较讨厌的,我在整理代码的时候,通常 ... -
Windows Server 2003 R2 修复Windows Server 2003
2006-03-19 13:05 1185最近特别喜欢去反波上听平客的段子,有一些也下载到本地了,但是我 ... -
靠左侧通行
2006-03-23 08:15 743从小老师和父母就告诉我,一定要靠人行横道的右侧通行,我也是 ...
相关推荐
优化存储过程是数据库管理的重要环节,以下是从标题、描述和部分内容中提炼出的七个关键方法: 1. **使用SET NOCOUNT ON选项**: 当在存储过程中使用SELECT语句时,SQL Server默认会返回受影响的行数。通过设置SET...
### 百万级的分页存储过程 在处理大量数据时,如何有效地进行分页查询是非常重要的技术之一。本文将详细介绍一个适用于Oracle数据库的高效分页存储过程,并对其内部实现原理进行深入剖析。 #### 存储过程概述 该...
3. **存储过程的优化**:精简存储过程中的代码,避免不必要的计算和数据读取,使用缓存等。 4. **分区和分表**:对于大型表,可以考虑使用分区或分表策略,以分散I/O负载。 【存储过程分页】 在存储过程中实现分页...
高效分页存储过程的实现对于优化数据库性能至关重要。本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数...
这里,我们将深入探讨如何使用存储过程实现分页查询。 首先,存储过程是SQL Server中预编译的SQL语句集合,它们可以接受参数、执行复杂逻辑并返回结果。在分页查询的上下文中,存储过程能够封装分页逻辑,使代码更...
4. **性能优化**:合理设计存储过程,避免不必要的数据检索和处理,以提高整体系统性能。 通过上述介绍可以看出,ASP结合SQL存储过程能够有效提升应用程序的性能和安全性,同时也为开发者提供了更加灵活的开发方式...
以下是一个结合实际应用场景编写的优化存储过程示例: ```sql CREATE procedure pagination1 (@pagesize int, --页面大小,如每页存储20条记录 @pageindex int --当前页码 ) as set nocount on begin declare @...
SET NOCOUNT ON; -- 避免命令返回不必要的消息 SELECT @password = pass FROM User_1 WHERE sName = @username; END; ``` 这里的存储过程名为`GetPassword`,接受一个输入参数`@username`用于指定查询的用户名...
1. **性能优化**:由于存储过程预先编译,执行效率比单独的SQL语句高。 2. **代码复用**:可以多次调用,减少网络传输,降低数据库压力。 3. **安全性**:通过权限控制,限制对数据的直接访问,提高数据安全。 4. **...
万能分页存储过程之所以被称为“万能”,是因为它应该具备足够的灵活性和通用性,能够适应各种表结构和查询需求,而不局限于特定的场景或数据模型。 首先,我们来理解分页的基本原理。分页查询通常涉及到两个关键...
你可以在存储过程中接收一个包含多个值的参数,如一个字符串,然后动态拼接`DELETE`或`SELECT`等SQL语句。例如: ```sql CREATE PROCEDURE usp/DeleteByIds (@idList VARCHAR(MAX)) AS BEGIN SET NOCOUNT ON; ...
此外,如果你使用的是ORM框架,如Entity Framework,调用存储过程的方式可能会有所不同,但基本思路是一致的。 总之,通过在C#中使用SQL Server的存储过程,我们可以有效地实现分页功能,从而提高数据检索效率并...
### 数据库存储过程的建立 在数据库管理领域中,存储过程是一种重要...在实际应用中,还需要结合具体的业务需求来调整这些存储过程的具体实现细节,例如增加日志记录、优化错误处理机制等,以满足更加复杂的应用场景。
在执行批处理过程中,控制 SET NOCOUNT 的设置可以避免不必要的消息传递。 **建议做法:** - 在批处理开始时设置 `SET NOCOUNT ON`。 - 在批处理结束时设置 `SET NOCOUNT OFF`。 #### 29. 考虑系统资源限制 在...
首先,【分页查找数据】的存储过程`[dbo].[GetRecordSet]`用于处理分页查询,这是在大型数据集上常用的一种优化方法,以避免一次性加载所有数据导致性能下降。这个存储过程接受查询SQL、当前页码和每页记录数作为...
为了提高查询效率和用户体验,分页成为了必不可少的功能之一。其中,利用存储过程实现分页是一种非常有效的方法。本篇文章将深入探讨如何使用存储过程进行分页,并分析不同方法的特点与适用场景。 #### 二、存储...
1. **SQL查询优化**:使用特定的SQL语句或者存储过程来实现精确的数据查询。 2. **数据分页逻辑**:在业务逻辑层编写合理的分页逻辑,确保每次只加载所需的数据。 3. **前端展示**:使用GridView等控件来展示分页后...