以降メモ
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 件のコメント:
コメントを投稿