【问题标题】:How to improve perfomance of recordset handling如何提高记录集处理的性能
【发布时间】:2012-09-19 07:17:18
【问题描述】:

我用 ASP 编写了一个 Web 应用程序,它从 MySQL 数据库 (v5.1.63) 中读取 3600 行数据并将数据输出到 HTML 表中。我正在使用记录集来获取数据和页面大小/光标位置,以让用户在页面之间前进/后退。该数据库目前包含大约 200.000 行,但还在不断增长。

页面加载时间越来越长(现在大约 15-20 秒),如果可能,我想对其进行优化。

我很想获得有关如何提高性能的提示。

这是数据库结构:

# Col 类型归类属性 Null 默认 1 ID int(11) 否 无 AUTO_INCREMENT 2 均值 varchar(5) utf8_general_ci 否 无 3 最大 varchar(5) utf8_general_ci 否 无 4 分钟 varchar(5) utf8_general_ci 否 无 5 dt varchar(20) utf8_general_ci 否 无 6 dir varchar(2) utf8_general_ci 否 无 7 日志文本 utf8_general_ci 否 无

这是我正在使用的代码:

' Opening the db
Set oConn = Server.CreateObject("ADODB.Connection")
Set oRS = Server.CreateObject("ADODB.Recordset")
oConn.ConnectionString =
"DRIVER={MySQL};SERVER=<server>;DATABASE=<database>;UID=<uid>;PWD=<pwd>;"
oConn.Open

' Retrieve 3600 records
sSQL = "SELECT * FROM mytable ORDER BY id DESC"
oRS.CursorLocation = adUseServer
oRS.PageSize = 6*600
oRS.Open sSQL, oConn, adOpenForwardOnly, adLockReadOnly
nPageCount = oRS.PageCount

...code to set the page selected by the user (nPage)

oRS.AbsolutePage = nPage

Do While Not (oRS.EOF Or oRS.AbsolutePage <> nPage)
    ...
    Response.Write("<td>" & oRS("dt") & "</td>")
    Response.Write("<td>" & oRS("mean") & "</td>")
    Response.Write("<td>" & oRS("min") & "</td>")
    Response.Write("<td>" & oRS("max") & "</td>")
    ...
    oRS.MoveNext
Loop
oRS.Close

【问题讨论】:

    标签: mysql asp-classic ado recordset


    【解决方案1】:

    如果您使用 MySQL 作为 RDMS - 如果您使用 mySqls LIMIT 子句执行分页,效率会高得多:

    即对于给定的查询字符串页码,每页获取 10 个项目:

    ItemsPerPage    = 10
    PageNumber      = request.querystring("Page")
    
    if PageNumber = "" then 
        PageNumber = 0
    end if
    
    Limit           = PageNumber * ItemsPerPage
    Query           = "SELECT * FROM mytable ORDER BY id DESC LIMIT " & Limit & ", " & ItemsPerPage
    

    【讨论】:

    • 谢谢,这大大减少了加载时间。还有什么可以做的,比如改变光标类型等?
    猜你喜欢
    • 2019-09-14
    • 2018-07-11
    • 2011-06-22
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2012-11-16
    • 2019-10-27
    • 2013-01-16
    相关资源
    最近更新 更多