本日志标题:ASP抽取数据的执行效率        [2006-10-12]

通常从数据库中抽取数据记录,需要使用到SQL语句,查询获得相关记录集,然后从记录集中选择相关字段、相关记录行进行显示。

那么在抽取到显示的一系列列过程中,如果注意如下几个要点,则令抽取数据的执行效率大大增加。

1,明确抽取的字段名称

正常的SQL语句抽取记录是:


Select * from [data_table]


即从数据表data_table中抽取所有字段的记录值。

select * 语句的执行效率是很低的,因为在执行这样的语句的时候其实执行了两次查询,在执行select语句前,首先必须查询系统表来确定名称和数据类型。

所以尽量最少使用select *语句,而使用明确的字段名称,如:


Select cn_name,cn_pwd from [data_table]



2,使用rs(0)比rs(filename)更快


Set rs=conn.Execute("Select cn_name,cn_pwd from [data_table]")


记录集rs()里面可以写字段名(字符型),或者字段索引号(数字),它代表字段列表中第几个字段。比如:
rs(0)就表示rs("cn_name")
rs(1)表示rs("cn_pwd")

事实已证明了用索引数(index number)访问记录集元素要比用字段名称(field name)快出几倍。按字符串查询要比按整数查询花去更多的时间和系统资源。

3,使用记录集rs值前,将其赋值给变量



<%
Set rs=conn.Execute("Select cn_name,cn_pwd from [data_table] where cn_id=1")
if not rs.eof then
do while not rs.eof
cn_name = rs(0) ' 把rs值赋给变量
cn_pwd = rs(1)
' ... 使用变量处理工作
rs.movenext
loop
end if
rs.close
Set rs = Nothing
%>



但在SQL语句或存储过程中改变了select列表的字段显示顺序,那么在赋值和处理时就要注意了。

4,当然,使用GetRows()又是另外一回事了

http://www.cnbruce.com/blog/showlog.asp?cat_id=26&log_id=1047



在百度搜索完整的ASP抽取数据的执行效率内容,或者用Google搜索相关的更多内容

By [cnbruce] at 11:34:20 | 评论 [53] | 浏览 [22964] | TrackBack| 返回顶部

About Comments
rs(0),rs(1)?是这种写法不用考虑自动编号字段还是这个表中没有自动编号字段?一般rs(0)都是指自动编号吧?
By [RomanYu] at 2006-10-12 12:10:44
哪个规定第一字段就是 自动编号数据类型的?
By [Xsder] at 2006-10-12 12:18:51
以下被引用:

rs(0),rs(1)?是这种写法不用考虑自动编号字段还是这个表中没有自动编号字段?一般rs(0)都是指自动编号吧?
By [RomanYu] at 2006-10-12 12:10:44



Select cn_name,cn_pwd from [data_table]

这时 rs(0) 就是 rs("cn_name")
By [pboy2925] at 2006-10-27 12:02:02
是自动为字段编号的吗?
e.g:
select a,b,c from Test
那么
rs(0) <-> a
rs(1) <-> b
rs(2) <-> c
?
By [KusTa] at 2006-10-31 11:50:37
rs(0)是你select得到的第一个字段
By [Doo] at 2006-10-31 20:44:00
测试了一下,使自动编号D
By [KusTa] at 2006-11-2 17:49:43
我真是太感谢您了,往往困扰我几个小时的问题,看了你的文章几分钟就可以解决,另外我的代码中rs(0)程序不能正常运行,rs("0")是可以运行的。很感谢您,祝您:一切顺心 如意!
By [luyu18] at 2007-5-10 17:57:07


Post a Comment
呢称: 验证码: 
禁止笑脸转换 禁止UBB | 缩放输入框:6 5 | [Ctrl+Enter提交](1000个字符限制)