首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页编程ASP代码

ASP三种方法抽取10万条数据的速度测试

来源: 互联网    日期:2007-1-13 15:08:41
 

    现有10W条数据,Access数据库保存

    通过正常提取: [转自:711网络工作室 http://www.tc711.com]

    
以下是引用片段:
    <%
    Set conn= Server.CreateObject("ADODB.Connection")
    connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("db2.mdb")
    conn.Open connstr
    
    Set rs = Server.CreateObject ("ADODB.Recordset")
    sql = "Select * from people order by id desc"
    rs.Open sql,conn,1,1
    
    Do While Not rs.EOF
        Response.write rs("id")&" | "
        rs.MoveNext
    Loop
    %>
 [转自:711网络工作室 http://www.tc711.com]

    耗时3,250.000毫秒,总测试平均值在3秒左右

    使用存储过程提取:

    
以下是引用片段:
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    Set cmd = Server.CreateObject("ADODB.Command")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db2.mdb")
    
    cmd.ActiveConnection = conn
    cmd.CommandText = "Select * from people order by id desc"
    Set rs = cmd.Execute
    
    Do While Not rs.EOF
    Response.write rs("id")&" | "
    rs.MoveNext
    Loop
    %>

    耗时2,187.500毫秒,总测试平均值在2秒左右

    以上两种均不能彻底解决执行时间漫长的问题,主要原因即是循环每次都须向数据库抽取记录(Command速度相对较快)

    那么使用GetRows()方法呢:

    <%

  Set conn = Server.CreateObject("ADODB.Connection")

  Set cmd = Server.CreateObject("ADODB.Command")

  conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db2.mdb")

  cmd.ActiveConnection = conn

  cmd.CommandText = "Select * from people order by id desc"

  Set rs = cmd.Execute

  rsArray = rs.GetRows()

  For i = 0 To UBound(rsArray, 2)

  Response.Write rsArray(0, i)&" | "

  Next

  %>
以下是引用片段:
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    Set cmd = Server.CreateObject("ADODB.Command")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db2.mdb")
    
    cmd.ActiveConnection = conn
    cmd.CommandText = "Select * from people order by id desc"
    Set rs = cmd.Execute
    
    Do While Not rs.EOF
    Response.write rs("id")&" | "
    rs.MoveNext
    Loop
    %>

    耗时187.500毫秒,总测试平均值在0.2秒左右

    GetRows()方法是将数据从 Recordset 复制到二维数组中,这是一个二维数组,第一个下标标识字段,第二个则标识记录号

    所以rsArray = rs.GetRows()

    rsArray(0, 0)就表示记录集第一行的第一字段值

    rsArray(1, 0)就表示记录集第一行的第二字段值

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

    另外,关于GetRows()的详细介绍和用法,这里有份内容参考

    http://www.51windows.net/pages/Ado/mdmthgetrows.htm

    http://www.blueidea.com/tech/program/2005/2853.asp



更多的ASP三种方法抽取10万条数据的速度测试请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2007-1-13 15:08:41   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报