从数据库中读取两个数据,哪种方式更快? 对性能要求很高的场合,一个频繁调用的函数中,需要得到数据库中的两个数据(仅仅是两个数据,不是两条记录或者两个字段)。此情况下,是使用RecordSet方法更快,还是使用Command执行存储过程、然后从存储过程返回的参数中获取更快?还有没有其它好的方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Why I couldn't see this article in list? 当然存储过程快,存储过程是编译好的(除第一次执行以外)。RecordSet也可以是只读只向前的,比如直接用连接执行一个SQL返回的记录集,速度也很快,如果查询不是很复杂,两者速度应该差不多 我认为: 首先,从传递的数据流量看:用command对象执行存储过程,在存储过程中堡查询到的数据作为参数返回(因为你只想要两个数据),这样要比recordeset传递表结构来得快 其次,如果查询较为复杂,可以建立视图(完成全部或大部分查询),这样服务器会事先自动维护视图(节省了复杂查询的时间),然后用存储过程从视图执行简单查询,大量的工作在服务器端预处理和完成,时间自然会节省不少 呵呵,谢谢大家。才发现漏了一个前提:使用Recordset执行的也是一个存储过程。而且,假设这两个存储过程在SQL Server上执行的效率一样快。例如:(1)dim a,bset rs=cn.execute("CheckUserStat1 " & strUserName)a=rs.fields(0)b=rs.fields(1)(2) dim a,b Cmd.CommandText = "CheckUserStat2" Cmd.CommandType = adCmdStoredProc Set para1 = Cmd.CreateParameter("Stat1", adInteger, adParamOutput) Cmd.Parameters.Append para1 Set para2 = Cmd.CreateParameter("Stat2", adInteger, adParamOutput) Cmd.Parameters.Append para2 Set para3 =Cmd.CreateParameter("strUserName", adVarChar, adParamInput) para3.Size = 100 Cmd.Parameters.Append para3 para3.Value = Trim(strUserName) m_Cmd.Execute a=para1.Value b=para2.Valueto:frankwong(黄梓钿) 你说的那个方式是不是在服务器端要有一个service负责接收和解析、处理这个请求包?是使用SOCKET方式传送吗? 求助vbs连接sql2000数据库语句 如何添加res文件?? 变量 在线等答案,问一个数据库查询时查询语句的构造问题(解决马上给分) 麻烦帮我看看这里的问题,不能移动到下一个记录,才学习多帮帮,神啊救救我吧 为什么在VB6中打开数据视图时,ActiveX不能创建对象? ☆★小弟的大作:远程监控"小强",恳请各位测试,凡进都有分★☆★ 请教如何解决? 学vb已经一年了,但来到论坛才发现自己学到的东西太肤浅了!都说vb简单真的吗? VB中取消按回车键时发出的‘嘀’的喇叭声,怎么办? 有正文 问一个很简单的SQL语句的问题 如何判断当前月有多少天,如何返回当天是星期几,谢谢各位了。。
大量的工作在服务器端预处理和完成,时间自然会节省不少
才发现漏了一个前提:使用Recordset执行的也是一个存储过程。
而且,假设这两个存储过程在SQL Server上执行的效率一样快。
例如:
(1)
dim a,b
set rs=cn.execute("CheckUserStat1 " & strUserName)
a=rs.fields(0)
b=rs.fields(1)(2)
dim a,b
Cmd.CommandText = "CheckUserStat2"
Cmd.CommandType = adCmdStoredProc
Set para1 = Cmd.CreateParameter("Stat1", adInteger, adParamOutput)
Cmd.Parameters.Append para1
Set para2 = Cmd.CreateParameter("Stat2", adInteger, adParamOutput)
Cmd.Parameters.Append para2
Set para3 =Cmd.CreateParameter("strUserName", adVarChar, adParamInput)
para3.Size = 100
Cmd.Parameters.Append para3
para3.Value = Trim(strUserName)
m_Cmd.Execute a=para1.Value
b=para2.Valueto:frankwong(黄梓钿)
你说的那个方式是不是在服务器端要有一个service负责接收和解析、处理这个请求包?是使用SOCKET方式传送吗?