2012-09-19 64 views
1

我已經編寫了一個ASP應用程序,它從MySQL數據庫(v5.1.63)讀取3600行並在HTML表格中輸出數據。我正在使用記錄集來獲取數據和頁面大小/光標位置,以便用戶在頁面之間前進/後退。該數據庫現在包含約200,000行,但不斷增長。如何提高記錄集處理的性能

頁面加載時間越來越長(大約15-20秒),如果可能,我想對其進行優化。

我會非常感興趣的如何提高性能的提示。

這裏是數據庫結構:

 
# Col Type   Collation  Attributes Null Default 
1 ID int(11)       No  None  AUTO_INCREMENT 
2 mean varchar(5) utf8_general_ci No  None 
3 max varchar(5) utf8_general_ci No  None 
4 min varchar(5) utf8_general_ci No  None 
5 dt varchar(20) utf8_general_ci No  None 
6 dir varchar(2) utf8_general_ci No  None 
7 log text   utf8_general_ci No  None 

這裏是我使用的代碼:

' 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 

回答

2

如果你使用MySQL的關係數據庫管理系統 - 這將是遠,如果更高效您執行使用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 
+0

謝謝,這大大縮短了加載時間。還有什麼可以做的,比如改變光標類型等? – user1119112