1. トランザクション処理を使用してデータベースを更新してみます。
VB のトランザクション処理には、BeginTrans で始まり CommitTrans または Rollback で終わる複数のデータベース操作命令が含まれます。トランザクション処理により、データベースの整合性が保証されるだけでなく、データベースのバッチ更新の効率も大幅に向上します。これは、データベース更新操作でトランザクション処理を使用しない場合、更新操作ごとにデータベースが 1 回ディスクに書き込まれるためです。トランザクション処理を使用した後、更新はメモリ バッファ内でのみ実行され、CommitTrans の実行時にすべての変更が一度にディスクに書き戻されます。トランザクション処理を使用する場合は、次の点に注意してください。
(1) トランザクション処理には完全なエラー チェック メカニズムが必要です。
(2) VB はトランザクション終了前にデータベースに対してページ ロックを使用するため、マルチユーザー環境ではトランザクションが中断されると、他のユーザーはロックされたデータにアクセスできなくなります。
2. 選択取得操作にコード分解を使用してみる
データベース操作に Select を使用するのはシンプルで使いやすいですが、一部の検索操作を同等の手動検索コードに分解すると、データベースの検索速度が大幅に高速化されます。分解の基本的な方法は、検索キー フィールドにインデックスを付けて使用することです。 Seek メソッドが見つかった後、インデックス付きデータベースのソートされた特性に基づいて、行トラバーサル検索。トラバース範囲がそれほど広くない場合、この方法によりデータベースのアクセス速度が数十倍向上します。たとえば、Select*frompersonwherevol='123'andbirth=#11-02-73# は次の操作に分解されます。 、アクセス速度を大幅に向上させることができます。
Table.Index=volTable.Seek=, 123ifnottable.nomatchthen
whilenottable.eof
iftable(vol)=123then
テーブル.ムーブラスト
elseiftable(誕生)=#11-02-73#then
'レコードを検索
エンドイフ
テーブル.ムーブネクスト
ウェンディフ
3.attach を使用してデータベーステーブルをバインドします
ODBC を使用して MSSQLServer、Oracle、Sysbase などのデータベース サーバーに接続する場合、MSAcess データベースはデータベース サーバー上のテーブルの構造をキャッシュできるため、MSAcess のアタッチ機能を通じてサーバー上のテーブルを MSAcess データベースにバインドできます。 ODBC データ ソースにアクセスすると、システム アクセスのパフォーマンスが向上します。
4. dbSQLPassThrough オプションを使用する
MSSQLServer、Oracle、および Sysbase データベース サーバーに接続する場合は、dbSQLPassThrough オプションを使用してコマンドをデータベース サーバーに直接送信します。これにより、ミドルウェアによるコマンドの検査と解釈が軽減され、データベース アクセスのパフォーマンスが向上します。次の例では、ストアド プロシージャを使用してダイナセットを作成します。
dimmydbasdatabasedimmydsasdynasetsetmydb=opendatabase(.....)'データベースを開きます setmyds=mydb.openrecordset(name, dbOpendynaset, dbSQLPassThrough,...)
dbSQLPassThrough を使用する場合の欠点は、返されるレコードセットが読み取り専用であることです。
5. データベースアクセスオブジェクトテーブルを正しく使用してください。
SEEK コマンドとインデックスをサポートすると、この 2 つの組み合わせが最も速くレコードを検索できるようになりました。筆者がかつて行った速度比較テストでは、100,000 件のレコードを取得するのに、Table では 3.5 秒、Dynaset では 9 秒、Snapshot サポートでは 10 秒かかりました。読み取りおよび書き込み操作はサポートされません。SORT および FILTER は、データベース内の物理テーブルに対応して、データベース テーブルに直接影響します。
Dynaset は、読み取りおよび書き込み操作をサポートし、ODBC では、複数のテーブルを関連付けるために、一意のインデックスを設定する必要があります。ダイナセットしか使用できません。
スナップショット。読み取りのみ可能ですが、書き込みはできません。また、トランザクション処理はサポートされません。
->