|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.功能援用纪录会合域值的最无效办法是甚么?
到今朝为止,我都是用名字援用纪录会合的域值的。这多是一种效力很低的办法,由于每次挪用都必要查找域。为了证实这一点,上面的测试就要经由过程纪录会合域的汇合的指针来援用域(ADO__08.asp):
writedata
DoWhileNotobjRS.EOF
Response.Write(_
"<TR>"&_
"<TD>"&objRS(0)&"</TD>"&_
"<TD>"&objRS(1)&"</TD>"&_
"<TD>"&objRS(2)&"</TD>"&_
"<TD>"&objRS(3)&"</TD>"&_
"<TD>"&objRS(4)&"</TD>"&_
"<TD>"&objRS(5)&"</TD>"&_
"<TD>"&objRS(6)&"</TD>"&_
"</TR>"_
)
objRS.MoveNext
Loop
正如我们所意料的,装载工夫的变更很小(差别多是因为代码上的稍微削减引发的)。可是这类手艺在无效显现工夫上却带来了分明的削减。
鄙人面的例子中,我们将给每一个域指定一个独自的变量。这类办法制止了在表格轮回内的一切查找(ADO__09.asp):
IfobjRS.EOFThen
Response.Write("NoRecordsFound")
Else
writeheadings
...
Dimfld0
Dimfld1
Dimfld2
Dimfld3
Dimfld4
Dimfld5
Dimfld6
Setfld0=objRS(0)
Setfld1=objRS(1)
Setfld2=objRS(2)
Setfld3=objRS(3)
Setfld4=objRS(4)
Setfld5=objRS(5)
Setfld6=objRS(6)
writedata
DoWhileNotobjRS.EOF
Response.Write(_
"<TR>"&_
"<TD>"&fld0&"</TD>"&_
"<TD>"&fld1&"</TD>"&_
"<TD>"&fld2&"</TD>"&_
"<TD>"&fld3&"</TD>"&_
"<TD>"&fld4&"</TD>"&_
"<TD>"&fld5&"</TD>"&_
"<TD>"&fld6&"</TD>"&_
"</TR>"_
)
objRS.MoveNext
Loop
Setfld0=Nothing
Setfld1=Nothing
Setfld2=Nothing
Setfld3=Nothing
Setfld4=Nothing
Setfld5=Nothing
Setfld6=Nothing
Response.Write("</TABLE>")
EndIf
到今朝,这类办法构成的了局是最好的。每笔记录的显现工夫下落成了.45毫秒。
如今,一切测试剧本的设置都请求对了局纪录集有一些懂得。好比说,我们一向在栏题目中给域名编码,独自地援用这些域的值。上面的例子供应了一个静态的办理计划,在域的汇合中轮回,不但失掉数据,也失掉域的题目(ADO__10.asp):
IfobjRS.EOFThen
Response.Write("NoRecordsFound")
Else
writeheadings
Response.Write("<TABLEBORDER=1><TR>")
ForEachobjFldinobjRS.Fields
Response.Write("<TH>"&objFld.name&"</TH>")
Next
Response.Write("</TR>")
writedata
DoWhileNotobjRS.EOF
Response.Write("<TR>")
ForEachobjFldinobjRS.Fields
Response.Write("<TD>"&objFld.value&"</TD>")
Next
Response.Write("</TR>")
objRS.MoveNext
Loop
Response.Write("</TABLE>")
EndIf
能够看到,我们在功能上有一个丧失,可是这个办法仍是比ADO__07.asp要快一些。
上面的测试是在最初两个测试之间举行一些折衷。经由过程在一个静态分派数组中保留域的援用,既保持了静态的天真性,也挽回了一些功能上的丧失。
IfobjRS.EOFThen
Response.Write("NoRecordsFound")
Else
DimfldCount
fldCount=objRS.Fields.Count
Dimfld()
ReDimfld(fldCount)
Dimi
Fori=0tofldCount-1
Setfld(i)=objRS(i)
Next
writeheadings
Response.Write("<TABLEBORDER=1><TR>")
Fori=0tofldCount-1
Response.Write("<TH>"&fld(i).name&"</TH>")
Next
Response.Write("</TR>")
writedata
DoWhileNotobjRS.EOF
Response.Write("<TR>")
Fori=0tofldCount-1
Response.Write("<TD>"&fld(i)&"</TD>")
Next
Response.Write("</TR>")
objRS.MoveNext
Loop
Fori=0tofldCount-1
Setfld(i)=Nothing
Next
Response.Write("</T</p>SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。 |
|