#02 | レコード読み込み時の OpenRecordset メソッドのパラメータを試す | |||||||||||||||||||||||||||
ここではテーブルからの"レコード読み込み"に関連した OpenRecordset メソッドのパラメータについて、いくつかその処理時間を比較してみます。OpenRecordset メソッドのパラメータとして使用可能な定数には ODBCDirect を対象としたものもありますが、ここではJETデータベースエンジンの読み込みに関連した次の3つの定数を取り上げてみます。ご覧のように、他のユーザーとの排他制御のレベルによって分類されているもので、自分が読込んだレコードのロック制御に取られる時間の程度によって定数ごとの処理時間に違いが出てくることが予想されます。
テストの概要としては、すでに10万件のレコードが保存されている、ID(オートナンバー型)、Data1(テキスト型)、Data2(テキスト型)の3つのフィールドから構成されるテーブルから、すべてのレコードを読み込む時間を測定するものです。それぞれの定数についてダイナセット(Dynaset)タイプのレコードセットとテーブル(Table)タイプのレコードセットも比較します。基本的なテストコードは次のようなものです。 Dim dbs As Database Set dbs = CurrentDb そして、テスト結果はつぎのようなものになりました。
時間的な違いはほんのわずかですが、おおむね予想通り、他のユーザーとの排他制御のレベルによって処理時間に違いが出たようです。ただ、dbReadOnlyなどは自分自身でもレコードの更新ができなくなるわけで、更新や追加のために準備しておく何らかの内部処理が不必要となる分、処理が速くなることも考えていたのですが、その効果はまったくないようです。もちろん、時間が短ければよいというものではなく、データの整合性などを考慮して、自分が読み込み中は一切他のユーザーは編集されては困るという場合もあるわけですから、これらの定数はそういった排他制御のため、あるいはレコードの編集に対する権限を明示的にする目的のもののようです。 ODBCのリンクテーブルの場合にはもしかしたらもう少し顕著な違いが現れるかもしれませんが、ローカルテーブルの場合にも非常に微少ながら「JETデータベースエンジンでは OpenRecordset メソッドのパラメータに dbReadOnly などを使用すると読み込み時間が若干長くなる。」ようです。 |
||||||||||||||||||||||||||||
|
Copyright © T'sWare All rights reserved |