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 では、複数のテーブルを関連付けるために、一意のインデックスを設定する必要があります。ダイナセットしか使用できません。
スナップショット。読み取りのみ可能ですが、書き込みはできません。トランザクション処理はサポートされません。Edit、Addnew、および Update メソッドはサポートされません。
->