关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1
原文地址:http://www.tuicool.com/articles/qe6BZbR
也许因为它太过于简单,自己一直没能好好关注这个语句,只记得"只是"提高点性能而已.有时会在存储过程中写上几句,有时也会懒得去敲这几个字母.但是.他们SET NOCOUNT ON 和SET NOCOUNT OFF 之间到底有多大的区别吗?前天一时好奇.终于想弄清楚他们之间性能有多大区别.在google一遍,找了几篇文章.我们可以得出一些结论.
How NOCOUNT affects ADO.NET (NOCOUNT对ADO.NET影响多大)by Jon Galloway
在文章的评论有一段测试的代码,大家可以复制到查询分析器进行测试.基本上,SET NOCOUNT ON比OFF更快点(但我测试的结果不是很理想,基本上二者相差不是太大,更夸张是文章下面的评论:
I want to share my experience with NOCOUNT.
A stored procedure who joins a few tables with more than 100.000 rows is very slow if you run it with ADO.NET and with option NOCOUNT ON. By setting NOCOUNT OFF the same procedure will be 10 times faster.
There is no difference if you execute this procedure from the Management Studio with NOCOUNT OFF or ON
MY GOD!
基本上他们的结论是:使用NOCOUNT能够减少网络的传输.当我们SET NOCOUNT ON时执行的存储过程每执行sql语句(像
SELECT, INSERT, UPDATE, DELETE)时会忽略向客户端发送
DONE_IN_PROC消息.
如果我们判断Update更新数据是否成功时,最简便的方法就是ExecuteNonQuery()>0.在使用SET NOCOUNT ON时, ExecuteNonQuery总是返回-1 . 一个很好的解决方法就是使用out parameter方式来输出是否成功 it uses the rows affected result to determine if the update succeeded .
另外有一篇 T-SQL 编码标准 是一篇不错的文章.非常值得一读.
原文地址:http://www.cnblogs.com/cnzc/archive/2007/09/01/878434.html
--------------------------------------------------------------------------
public virtual int GetMenuByRID(Nullable<int> rID)
{
var rIDParameter = rID.HasValue ?
new ObjectParameter("RID", rID) :
new ObjectParameter("RID", typeof(int));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("GetMenuByRID", rIDParameter);
}
ObjectContext.ExecuteFunction 这个返回的是影响的行数
关于Set Nocount ON的性能 |c#调用存储过程的返回值总是-1的更多相关文章
- EF 6 调用存储过程时返回多结果集和OUTPUT参数问题
原文地址:http://q.cnblogs.com/q/56836/ 各位大侠,提问一个关于EF6调用存储过程时返回多结果集和OUTPUT参数问题 目前已经可以调用存储过程并且可以返回多个结果集. 但 ...
- AJAX JQuery 调用后台方法返回值(不刷新页面)
AJAX JQuery 调用后台方法返回值(不刷新页面) (1)无参数返回值(本人亲试返回结果不是预期结果) javascript方法: $(function () { //无 ...
- spring jdbctemplate调用存储过程,返回list对象
注:本文来源于< spring jdbctemplate调用存储过程,返回list对象 > spring jdbctemplate调用存储过程,返回list对象 方法: /** * 调用 ...
- java调用shell获取返回值
转自:http://blog.csdn.net/tengdazhang770960436/article/details/12014839 1.shell文件return.sh echo 1 echo ...
- Spring框架下的 “接口调用、MVC请求” 调用参数、返回值、耗时信息输出
主要拦截前端或后天的请求,打印请求方法参数.返回值.耗时.异常的日志.方便开发调试,能很快定位到问题出现在哪个方法中. 前端请求拦截,mvc的拦截器 import java.util.Date; im ...
- JDBC和JPA调用储存过程 接收存储过程有返回值
============jdbc==========================================--java代码:一个输出参数--String connURL = null;Con ...
- Spring data jpa 调用存储过程处理返回参数及结果集
一.环境 1.此随笔内容基于spring boot整合的spring data jpa项目, 2.数据库为mysql 5.7.9版本 二.内容 1. 新建存储过程 pro_query_object B ...
- Sybase·调用存储过程并返回结果
最近项目要用Sybase数据库实现分页,第一次使用Sybase数据库,也是第一次使用他的存储过程.2个多小时才调用成功,在此记录: 项目架构:SSM 1.Sybase本身不支持分页操作,需要写存储过程 ...
- lua调用c++函数返回值作用
2015/05/28 lua调用c++接口,返回给lua函数的是压入栈的内容,可以有多个返回值.但是c++接口本身也是有返回值的,这个返回值也非常的重要,会决定最后返回到lua函数的值的个数. (1) ...
随机推荐
- js 获取10个不重复随机数
var arr1 = new Array(); var arr2 = new Array(); for(var i = 0; i<20; i++){ arr1.push(i); } for(va ...
- Oracle_Q&A_04
2014-12-19作业 [JSU]LJDragon's Oracle course tasks In the first semester, junior year --1.在管理员权限下创建一个新 ...
- Eclipse中设置编码的方式
如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码, ...
- C++ lambda 表达式传递的变量默认不可变
我遇到例如以下问题: int count=0; listener->onTouchMoved=[count](Touch* t,Event* e){ count++; log("onT ...
- PHP字符串的编码问题(转)
大家都知道,不同字符编码,其在内存占用的字节数不一样.如ASCII编码字符占用1个字节,UTF-8编码的中文字符是3字节,GBK为2个字节. PHP 也自带几种字符串截取函数,其中常用到的就是 s ...
- less样式表
LESS是一种由Alexis Sellier设计的动态层叠样式表语言.受Sass所影响,同时也影响了Sass的新语法:SCSS.[2] LESS是开源的,其第一个版本由Ruby写成,但在后续的版本当 ...
- SqlServer 开启或关闭数据库主键自增
可用作删除一行主键数据库,在还原数据行,或者删掉后,被伤处的主键还可以利用 --开启当前表的可复制功能,仅在当前回话中有效 SET IDENTITY_INSERT dbo.PDAUserInfo O ...
- AngularJs练习Demo14自定义服务
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...
- 基于live555的一个简单RTSP服务器
1,编译live555源码目录下的 BasicUsageEnvironment.groupsock.liveMedia.UsageEnvironment四个工程生成相应的库文件: 目录结构如下: 2, ...
- hdu5362 Just A String(dp)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Just A String Time Limit: 2000/1000 MS (J ...