アクションクエリーのトランザクションを考える結論アクションクエリーの「トランザクションの使用」プロパティは、デフォルトの"はい"のままで、特にその設定を気にする必要はない。Laboでもすでに取り上げています(#09参照)。トランザクション処理は、アクションクエリーにも用意されています。クエリーの「トランザクションの使用」というプロパティがそれです。デフォルトでは"はい"、トランザクションを使用するという設定になっています。データ処理の安全性を優先した設定になっているわけです。データアクセスの最適化というと、テーブル構造やキー設定、VBAのコーディングなどに目が向きがちですが、このようなプロパティ設定1つでも、パフォーマンスが変わる可能性があります。ここでは、このプロパティの"はい"・"いいえ"が、アクションクエリーの実行時間にどれだけ影響を与えるか、実際に比較、検証してみたいと思います。テスト内容は簡単なものです。5000件のレコードを持ったテーブルを用意します。その全レコードのある1つのフィールドの値を更新するクエリー、全レコードをそっくり別のテーブルに追加するクエリー、全レコードを削除するクエリーの3つのクエリーを用意します。これらのクエリーの「トランザクションの使用」プロパティは、デフォルトの"はい"に設定されています。これらをコピーし、「トランザクションの使用」プロパティを"いいえ"にすることによって、合計6ケのクエリーを作ります。あとは、それらを順番に実行し、それぞれの実行時間を測定します。6テストに使うコードは次のようなものです。行の右に書かれた番号が、テストパターンの各番号を表しています。Subテスト結果は次の通りです。0.68削除クエリーでは、トランザクションを使わないことによって若干処理時間が短くなっていますが、おおむね、VBAにおけるトランザクション処理と同様、アクションクエリーでも、トランザクションを使うことによってパフォーマンスが向上するということが分かりました。VBAの場合は、トランザクションを意識してコーディングしなければなりませんが、クエリーの場合にはトランザクションを使うという設定がデフォルトになっていますので、逆に「この設定を変更するとパフォーマンスが落ちる」という言い方もできると思います。アクションクエリーの「トランザクションの使用」プロパティは特に気にする必要はないといってもいいかもしれません。今回の結果で、削除クエリーの場合にはトランザクションを使わない方が処理時間が小さくなっていることを考えると、処理対象とするテーブルのレコード数、キー設定などのテーブル構造、あるいはWHERE条件などによって、トランザクションの効果が変わらないとは言い切れないかもしれません。