#22 | Jetデータベースエンジン3.5と4.0を比較する | ||||||||||||||||
Access2000のリリースとともに、Accessの基本的なデータベースエンジンである「Jetデータベースエンジン」もバージョン3.5から4.0にバージョンアップされました。それに伴いJetデータベースエンジンへのアクセスをカプセル化したオブジェクト「DAO(Data Access Object)」も3.5から3.6にバージョンアップされました。Access97の「Jet3.5+DAO3.5」という組み合わせに対して、Access2000(.MDBの場合)では「Jet4.0+DAO3.6」という組み合わせでテーブルやクエリーにアクセスします。データアクセスの中心がDAOからADO(Microsoft ActiveX Data Objects)に移行しつつあるという状況と、0.1だけのバージョンアップということもあり、DAOの持つオブジェクト、メソッド、プロパティなどには特に目新しいものはないようです。事実、データベースデザインに関する新機能やWeb対応、SQL Serverなどのフロントエンド開発ツールとしての新機能など、Access2000本体に関してはいろいろ取り沙汰されているものの、最新のDAOに関してはあまり情報を見かけません。一方、Jetデータベースエンジンの方は0.5のバージョンアップで、DAOがあまり外見的に変わっていないことからして刷新的なものはないにしても、多少は内部的な機能向上が図られているのではないかと想像できます。そこで今回は、データアクセスの基本的な操作についてそれらの実行時間の比較を行い、その違いを探ってみることにしました。 Dim dbs As Database Dim rst As DAO.Recordset Dim ilngLoop As Long Dim varDummy As Variant Const clngRecMax As Long = 10000 Set dbs = CurrentDb Set rst = dbs.OpenRecordset("tblTest") ts_watch "テスト開始", True 'レコードを追加 For ilngLoop = 1 To clngRecMax With rst .AddNew !Data1 = ilngLoop !Data2 = ilngLoop * 2 !Data3 = "ABC" !Data4 = "EFG" .Update End With Next ilngLoop ts_watch "レコード追加" 'レコード読み込み rst.MoveFirst For ilngLoop = 1 To clngRecMax With rst varDummy = !Data1 varDummy = !Data2 varDummy = !Data3 varDummy = !Data4 .MoveNext End With Next ilngLoop ts_watch "レコード読み込み" 'レコード更新 rst.MoveFirst For ilngLoop = 1 To clngRecMax With rst .Edit !Data2 = ilngLoop * 3 !Data3 = "HIJK" !Data4 = "LMN" .Update .MoveNext End With Next ilngLoop ts_watch "レコード更新" 'レコード削除 rst.MoveFirst For ilngLoop = 1 To clngRecMax With rst .Delete .MoveNext End With Next ilngLoop ts_watch "レコード削除" rst.Close dbs.Close そして、テスト結果はつぎのようなものになりました。 これはあまりにも予期しない結果です。Access2000のテスト結果はAccess97の10倍以上の値になっています。しかし間違いなく結果を逆に書いてしまったわけではありません。これだけ大きな差が出てしまうと、テストのやり方そのものに問題があるのではないか、Access2000でDAOを"普通"に使うための何か大切なスイッチを1つ押し忘れているのではないかといった心配さえ出てきます。今回のテストではまずAccess97のデータベースを作成し、それをAccess2000にコンバートするという順番で行いました。しかし単純にコンバートするだけではいけないのではないかと考え、いくつかの可能性を試してみることにしました。
今回の結果はあまりにも予想外であったため、この結果だけから「JETデータベースエンジンは遅くなった」という結論を出すには早急かもしれません。Access2000のデータベース構造も含めて、今後いろいろ調査していく必要がありそうです。 なお、上記の表にまとめたテスト結果とは別に、Access2000のテストで気づいたいくつかの特徴的な点があったので、次にまとめておきます。もちろんその要因は分かっていません。ある種のAccess2000データベースの特性的なものかもしれません。
|
|||||||||||||||||
|
Copyright © T'sWare All rights reserved |