Posted by lawrhino - 2007.06.15,Fri
昨日は一日中VBAの性能改善を行っていたのだが、
出口のない迷宮に入ったみたいに解決策が浮かばなかった。
テーブルリンクを張ったリモートにあるpostgresのテーブルに
MDB内のテーブルをごっそりコピーしたい。
レコード件数は20000件弱。
処理としてはVBAよりDoCmd.RunSQLでINSERT SELECTを実行。
1テーブルあたりに要した時間は約3分強。
遅すぎね?
他のツール、例えばCSE等のフロントエンドツールでODBC接続により
同じ件数のレコードで更新処理を行ったら3秒くらいで終わった。
明らかに無駄な処理をしてるとしか思えない。
1レコードずつ読みながら1レコードずつINSERTしたり、
クエリを作ってExecuteで呼び出したり、
試してみるけど全て効果は上がらなかった。
なんかいい解決策ないですかね?
理想は1テーブル5秒以内。
Windows2000でAccess2002を2000互換モードとして動かしています。
6/15追記:
CSEの3秒は、本日検証担当者に確認してみると勘違いでした。
どうやらリモートとリモートのDB間での処理だったらしい。
出口のない迷宮に入ったみたいに解決策が浮かばなかった。
テーブルリンクを張ったリモートにあるpostgresのテーブルに
MDB内のテーブルをごっそりコピーしたい。
レコード件数は20000件弱。
処理としてはVBAよりDoCmd.RunSQLでINSERT SELECTを実行。
1テーブルあたりに要した時間は約3分強。
遅すぎね?
他のツール、例えばCSE等のフロントエンドツールでODBC接続により
同じ件数のレコードで更新処理を行ったら
明らかに無駄な処理をしてるとしか思えない。
1レコードずつ読みながら1レコードずつINSERTしたり、
クエリを作ってExecuteで呼び出したり、
試してみるけど全て効果は上がらなかった。
なんかいい解決策ないですかね?
理想は1テーブル5秒以内。
Windows2000でAccess2002を2000互換モードとして動かしています。
6/15追記:
CSEの3秒は、本日検証担当者に確認してみると勘違いでした。
どうやらリモートとリモートのDB間での処理だったらしい。
PR
Comments
Post a Comment
カレンダー
プロフィール
HN:
lawrhino
性別:
非公開
最新記事
忍者アド
最新TB
アクセス解析
Template by mavericyard*
Powered by "Samurai Factory"
Powered by "Samurai Factory"