余志国网站设计工作室是专业从事义乌网站建设、义乌外贸网站建设、义乌网站制作、义乌网站设计的专业义乌网站建设工作室,是义乌外贸网站建设专家!

ASP抽取数据的执行效率

分类:程序开发 Tags: asp 数据库 评论:0 浏览:2789 最近更新时间:2010/11/4 16:24:21

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

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

1,明确抽取的字段名称

正常的SQL语句抽取记录是:
 
  1. Select * from [data_table]
即从数据表data_table中抽取所有字段的记录值。

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

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

Select cn_name,cn_pwd from [data_table]

2,使用rs(0)比rs(filename)更快
 
  1. 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值前,将其赋值给变量
 
  1. <% 
  2. Set rs=conn.Execute("Select cn_name,cn_pwd from [data_table] where cn_id=1")
  3. if not rs.eof then 
  4. do while not rs.eof 
  5. cn_name = rs(0) ' 把rs值赋给变量 
  6. cn_pwd = rs(1) 
  7. ' ... 使用变量处理工作 
  8. rs.movenext 
  9. loop 
  10. end if 
  11. rs.close 
  12. Set rs = Nothing
  13. %>
但在SQL语句或存储过程中改变了select列表的字段显示顺序,那么在赋值和处理时就要注意了。

4,使用GetRows()方法
 
  1. <%
  2. Set conn = Server.CreateObject("ADODB.Connection")
  3. Set cmd = Server.CreateObject("ADODB.Command")
  4.  
  5. conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db2.mdb")
  6. cmd.ActiveConnection = conn
  7. cmd.CommandText = "Select * from people order by id desc"
  8. Set rs = cmd.Execute
  9. rsArray = rs.GetRows()
  10.  
  11. For i = 0 To UBound(rsArray, 2)
  12. Response.Write rsArray(0, i)&" | "
  13. Next
  14. %>
GetRows()方法是将数据从 Recordset 复制到二维数组中,这是一个二维数组,第一个下标标识字段,第二个则标识记录号

所以rsArray = rs.GetRows()
rsArray(0, 0)就表示记录集第一行的第一字段值
rsArray(1, 0)就表示记录集第一行的第二字段值

数组的数据是保存在内存中的,这就从根本上解决了每次显示记录还需向数据库请求的麻烦。

本文地址:https://www.yuzhiguo.com/489/
  • 相关文章
  • 推荐文章
  • 最新文章
发表评论





您的IP:3.215.177.171,来自:

留言

 


免费咨询
建站咨询热线
15967985565

扫一扫微信咨询
QQ: 358758308 Skype: yuzhiguo Facebook: yuzhiguo Email