最近、外注システムのDBにAccessから接続して、分析業務を行う機会が多くあります。
Oracle等のフロントエンドとしてACCESSを使用する機会は、社内情シスであれば頻繁にあると思います。そんなとき、普通はOracle内のテーブルにリンクした後、リンクテーブルをACCESSのデータベース内にあるテーブルと同じように扱ったりします。ACCESSで書いたSQLはACCESSがローカルPC側で実行するので、PCの処理能力に左右されます。
このため、ローカルPCの処理速度が遅いような場合においては、サーバー側でクエリを処理をする「パススルークエリ」を使用すると高速化を図ることができます。
パススルークエリを使用するメリット
パススルークエリもodbc経由という意味ではADOやDAOと同じですが、「サーバーサイドで処理した結果を返す」という点が高速化につながっているようです。
パススルークエリのデメリット
逆にデメリットもあるようですね。
これは実測していないため正確なところはわかりません。
実際のVBAでの記述例
Dim Rs as DAO.Recordset
Dim Db as DAO.Database
Dim sSQL as string
Dim qDef as QueryDef
Set Db = CurrentDb()
Db.QueryDefs.delete("Q_test")
qDef.ODBCTimeout = 0
qDef.Connect = "ODBC;DSN=●●●;UID=●●●;PWD=●●●;"
qDef.SQL = "SELECT * ......"
qDef.ReturnsRecords = True
Set Rs = qDef.OpenRecordset
実行してみると、30分以上かかっていた処理を思いSQLが10分弱に短縮されました。
環境や実現しようとしていることによるのかもしれませんが、確かに早いことだけは確認できました。

すぐわかるSUPER Access VBA 挫折しないでマスターする本 Access 2010/2007 対応
- 作者: 神田知宏
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2012/03/09
- メディア: 特大尺寸
- この商品を含むブログを見る

業務によく効くAccess 開発現場ワザ (DB Magazine SELECTION)
- 作者: 星野努
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/31
- メディア: ?行本-平装
- この商品を含むブログ (1件) を見る

中小企業向けAccess 開発実践ノウハウ (DB Magazine SELECTION)
- 作者: インフォース前野好太郎
- 出版社/メーカー: 翔泳社
- 発売日: 2007/01/30
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 6回
- この商品を含むブログ (5件) を見る