1日に1000件単位で増えていくデータベースで
連続的に、データ抽出して、エクセルに集計という
形で、表示させていたVBAが、データ件数、9万件
程度で、速度が追い付かなくなってきていました。
VBで作り直して動かしてみてもやはり、速度が
追いついていないことがわかりました。
データの容量的には10メガバイトくらいなので、
なんともないのですが。
データベースの、インデックスの貼り方を工夫すればいいのかな
と思いますが、あまり、インデックスを貼りすぎると、今度は、
データ登録側のプログラムに影響してくる可能性もあります。
VBでつくり直した際に、どこで時間がかかっているのかを
よく確認してみると、少し、複雑なSQLを発行してデータを
抽出しているところだということがわかり、これだと、インデックスを
工夫しても、もしかしたら、改善しないかもと思えました。
最終的に、5秒タイマーと30秒タイマーを用意して、
時間のかからない処理は5秒タイマーのなかで処理して
時間のかかる処理は30秒タイマーの中で処理するように
しました。
これで、プログラムが止められないということは避けられました。
根本的な解決方法はまだはっきりとは見えてないですが、
直近のデータだけ残して、後は、構造が同じの別テーブルに
バックアップしていく方法を考えたほうがいいだろうなと
思えました。
0 件のコメント:
コメントを投稿