Accessのパススルークエリで高速化してみたメモ

Access
スポンサーリンク

最近、外注システムの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 対応

すぐわかるSUPER Access VBA 挫折しないでマスターする本 Access 2010/2007 対応

業務によく効くAccess 開発現場ワザ (DB Magazine SELECTION)

業務によく効くAccess 開発現場ワザ (DB Magazine SELECTION)

中小企業向けAccess 開発実践ノウハウ (DB Magazine SELECTION)

中小企業向けAccess 開発実践ノウハウ (DB Magazine SELECTION)

タイトルとURLをコピーしました