MySQL データベース (v5.1.63) から 3600 行を読み取り、HTML テーブルにデータを出力する ASP で Web アプリケーションを作成しました。レコードセットを使用してデータとページサイズ/カーソル位置を取得し、ユーザーがページ間を前後に移動できるようにしています。データベースには現在約 200.000 行が含まれていますが、継続的に増加しています。
ページの読み込みに時間がかかるため (現在は約 15 ~ 20 秒)、可能であれば最適化したいと考えています。
パフォーマンスを改善する方法についてのヒントを得ることに非常に興味があります。
データベース構造は次のとおりです。
# 列 タイプ 照合属性 Null デフォルト 1 ID int(11) いいえ なし AUTO_INCREMENT 2 mean varchar(5) utf8_general_ci いいえ なし 3 max 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