以降メモ
SP1適用前に作成したaccdbを適用後に稼働させた時、パフォーマンスが悪かった。
→最適化後パフォーマンス回復
テストコード
Option Compare Database
Option Explicit
Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
Sub CreateTestData()
Randomize
Dim db As Database, rs As Recordset, i As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("select * from tbl01")
For i = 1 To 5000000
rs.AddNew
rs("FDate") = #1/1/2011# + Int(1000 * Rnd)
rs("Code") = Int((1000 * Rnd) + 1)
rs.Update
Next
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
Sub test0()
Debug.Print "1回目"
test1
Debug.Print "2回目"
test1
End Sub
Sub test1()
Dim dbs As DAO.Database, rs As DAO.Recordset, i As Long
Set dbs = CurrentDb
i = GetTickCount
Set rs = dbs.OpenRecordset("select * from tbl01 WHERE Code = 1000 Order By FDate desc;")
Do Until rs.EOF
rs.MoveNext
Loop
Debug.Print rs.RecordCount, GetTickCount - i
rs.Close: Set rs = Nothing
Set rs = dbs.OpenRecordset("select * from tbl01 WHERE Code = 1 Order By FDate desc;")
Do Until rs.EOF
rs.MoveNext
Loop
Debug.Print rs.RecordCount, GetTickCount - i
rs.Close: Set rs = Nothing
Set rs = dbs.OpenRecordset("select * from tbl01 WHERE Code = 900 Order By FDate desc;")
Do Until rs.EOF
rs.MoveNext
Loop
Debug.Print rs.RecordCount, GetTickCount - i
rs.Close: Set rs = Nothing
dbs.Close: Set dbs = Nothing
End Sub
a2010(64bit)で以前こんなことになっていたのだけど
1回目
5027 78
5037 156
4938 219
2回目
5027 205063
5037 378942
4938 423012
ここまで極端に落ち込み事が今のところ発生していないと思ったけど
1回目
5027 125
5037 203
4938 265
2回目
5027 62
5037 9594
4938 9719
になることはある。
1回目
4973 93
5069 156
4998 218
2回目
4973 63
5069 125
4998 204689
1回目
4973 109
5069 171
4998 203597
2回目
4973 177576
5069 225203
4998 227574
て感じもでてきた。なんか変だ。
Win7(32)+a2010(32)のパフォーマンスは安定したように見受けられる。
0 件のコメント:
コメントを投稿