- ベストアンサー
追加クエリの遅さを解消したいです。
外部データベースのデータをAccessのテーブルとして取り込んでから、作業するシステムを作成しています。 日々新規のデータが追加されていく外部データベースの、新規データのみを追加していく追加クエリを作成したのですが、とにかく遅いのです! データは6万件ほどあります。けれど、新規に追加したいデータは、日々30件ほどです。 この遅さを解消する方法はありませんか? 良いアドバイスがありましたら教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
つまり、外部DBのテーブルと、AccessDBのテーブルの差分を取って、この差分だけをAccessDBのテーブルに追加してる、ということですか? んと、まず、外部DBのテーブルを全部取り込む。 取り込んだテーブルにインデックスをつける。 その後で、差分を取って、追加するっていうふうにしたらどうでしょ。
その他の回答 (3)
- majionea
- ベストアンサー率30% (3/10)
NO1に回答したものです。 250MB以上あって、追加クエリの起動に時間がかかるんですね。考えられることは、(1)ユニオンクエリを使用していないか、(2)クロス集計クエリを使用していないか、(3)ハードディスクの容量の空きがない、この3つが考えられますね。 (1)と(2)のクエリを使用すると、メモリー次第では実行するのにかなりの時間がかかります。また、ハードディスクの空きは十分に作ってください。 そもそもmaokuboさんが作られたDB(データベース)の容量はいくらですか?10000MB以上ですか? こうなったら、「最適化」を実行してみてください。やりかたは、「ツール」-「データベースユーティリティ」-「最適化」です。
お礼
追加クエリを複数に分けて実行するようにしたら、1分まで短縮できました。 クロス集計などは使用していないです。 回答ありがとうございました。
- alfeim
- ベストアンサー率58% (114/195)
6万件もレコードがあるのであれば別のちゃんとしたデータベースを利用した方が良いと思いますが・・・ 速度的な問題もある程度は緩和されると思いますよ
- majionea
- ベストアンサー率30% (3/10)
メモリーは幾つのをお使いですか? 以前、3000件のデータを32MBで管理していましたが、その時も遅かったです。 6万件ならば、256MB以上は必要じゃないですか?
補足
早速の回答ありがとうございます。 メモリは254MBあります。 もっと増やさないとだめですか? 追加クエリの終了する時間を計ってみたら、4分でした。
お礼
外部データベースとの関係を見直し、複数回に分けて追加するようにしたら、1分まで短縮できました。 ありがとうございました。