外部データベースのデータをAccessのテーブルとして取り込んでから、作業するシステムを作成しています。
日々新規のデータが追加されていく外部データベースの、新規データのみを追加していく追加クエリを作成したのですが、とにかく遅いのです!
データは6万件ほどあります。けれど、新規に追加したいデータは、日々30件ほどです。
この遅さを解消する方法はありませんか?
良いアドバイスがありましたら教えて下さい。

A 回答 (4件)

つまり、外部DBのテーブルと、AccessDBのテーブルの差分を取って、この差分だけをAccessDBのテーブルに追加してる、ということですか?



んと、まず、外部DBのテーブルを全部取り込む。
取り込んだテーブルにインデックスをつける。
その後で、差分を取って、追加するっていうふうにしたらどうでしょ。
    • good
    • 0
この回答へのお礼

外部データベースとの関係を見直し、複数回に分けて追加するようにしたら、1分まで短縮できました。
ありがとうございました。

お礼日時:2001/08/06 11:01

NO1に回答したものです。



250MB以上あって、追加クエリの起動に時間がかかるんですね。考えられることは、(1)ユニオンクエリを使用していないか、(2)クロス集計クエリを使用していないか、(3)ハードディスクの容量の空きがない、この3つが考えられますね。

(1)と(2)のクエリを使用すると、メモリー次第では実行するのにかなりの時間がかかります。また、ハードディスクの空きは十分に作ってください。

そもそもmaokuboさんが作られたDB(データベース)の容量はいくらですか?10000MB以上ですか?

こうなったら、「最適化」を実行してみてください。やりかたは、「ツール」-「データベースユーティリティ」-「最適化」です。
    • good
    • 0
この回答へのお礼

追加クエリを複数に分けて実行するようにしたら、1分まで短縮できました。
クロス集計などは使用していないです。
回答ありがとうございました。

お礼日時:2001/08/06 10:59

6万件もレコードがあるのであれば別のちゃんとしたデータベースを利用した方が良いと思いますが・・・


速度的な問題もある程度は緩和されると思いますよ
    • good
    • 0

メモリーは幾つのをお使いですか?



以前、3000件のデータを32MBで管理していましたが、その時も遅かったです。

6万件ならば、256MB以上は必要じゃないですか?

この回答への補足

早速の回答ありがとうございます。
メモリは254MBあります。
もっと増やさないとだめですか?
追加クエリの終了する時間を計ってみたら、4分でした。

補足日時:2001/07/31 17:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QphpMyAdminでのフィールド削除(クエリ実行)

本当にMySQL初心者なので基本的にコマンドが理解できないのですが、phpMyAdminにてデータベースを管理していますが、一つのテーブルに数千のデータが入っており、例えばID番号1から500までを一気に削除したいと言うときに、最初はローカルにCSVデータをエキスポートして編集した後インポートさせようとしたのですが、文字コードの関係でエラーになってしまい、解決策はクエリでデータを削除するしかないとの結論になりました。
例えばテーブルを指定してからクエリのウィンドウを開くとSELECT * FROM `テーブル名` WHERE 1
とすでに入力されているのですが、これをどのように書き換えれば複数のフィールドをいっぺんに削除できるのでしょうか?
非常に困ってます、アドバイスよろしくお願いします

Aベストアンサー

普通にクエリを書いて実行してください

DELETE FROM `テーブル名` WHERE `ID` BETWEEN 1 AND 500;

Q「リレーショナルデータベース」と「データベース」

「リレーショナルデータベース」と「データベース」は何が違うのでしょうか?
accessはリレーショナルデータベースとの事ですが,普通のデータベースと何が違うのでしょうか?

[データベースはこうだけど、リレーショナルデータベースはこうだよ!]
って教えて頂ければ助かります。

Aベストアンサー

データベースというのはデータの集まりのことで、ソフトウエアのことではありません。データベースという用語は法律でも定義されています。
著作権法第2条第1項十の三
 データベース 論文、数値、図形その他の情報の集合物であつて、それらの情報を電子計算機を用いて検索することができるように体系的に構成したものをいう。

リレーショナルデータベースとは複数のデータベースを組み合わせて(関連付けて)一体として管理するデータベース構造(スキーム)のことであり、組み合わされる個々のデータベースのことはテーブルと呼びます。もちろんリレーショナルデータベースもデータベースの一種です。上記の法律の条文に照らしてみれば明らかでしょう。
EXCELのような表計算ソフトでもデータベース(テーブル)を構築することはできますが、リレーショナルデータベースを構築するには専用の管理機構が必要で、表計算ソフトでは構築不能です。

Accessのようなソフトはこのデータベースを管理・操作するためのソフトウエアであり、分類上「データベースソフト」あるいは「DBMS(データベース・マネジメントシステム)」と呼ばれます。素人向けはデータベースソフト、業務用はDBMSと呼ぶのが普通です。なお、マイクロソフトではAccessのことを、一般向けにはデータベースソフトウエアと呼び、技術者向けにはDBMSと呼んでいるようです。これらのソフトウエアで管理・操作する対象がデータベースでありリレーショナルデータベースなのであって、Accessなどのソフトウエアがデータベースなのではありません。

パソコンが仕事で使われることの少なかった初期(主にホビー・家庭用途)は、パソコン上で動作するデータベースソフトは「カード型」などのリレーショナル機能のないものが主流でした。住所録管理程度であればこれで十分でしたし、当時の表計算ソフトは現在のような大量データは扱えませんでしたから(最大500行とか)、Windows普及以前はデータベースソフトと言えばリレーショナル機能のないカード型ソフトが家庭や零細企業では普通に使われていました。
リレーショナルデータベースがあっても高価で(ビジネス用で一番普及していたdBASEは定価268,000円だったはず)、システム構築も簡単ではないので、システム化の進んだ大手企業やその関連会社でもなければ導入していないのが普通だったと思います。

データベースというのはデータの集まりのことで、ソフトウエアのことではありません。データベースという用語は法律でも定義されています。
著作権法第2条第1項十の三
 データベース 論文、数値、図形その他の情報の集合物であつて、それらの情報を電子計算機を用いて検索することができるように体系的に構成したものをいう。

リレーショナルデータベースとは複数のデータベースを組み合わせて(関連付けて)一体として管理するデータベース構造(スキーム)のことであり、組み合わされる個々のデータベー...続きを読む

Qアクセスの削除クエリでいいのでしょうか?

 データベースで検索できるようにしたいのですが・・・・。クエリの検索結果をフォームに反映させています。
 検索結果表示後、もう一度検索フォームに戻り、検索をかけたときヒットするデータがないにも関わらず前回の検索結果が表示されたままになってしまいます。
削除クエリを使用すればいいのでしょうか?
 また削除クエリをどのように設定したらいいのでしょうか?(たとえば抽出条件が必要なのでしょうか?)
 この場合、マクロはいったん削除クエリを開き、もう一度クエリを開く設定でいいのでしょうか?分かりにくい質問ですいませんが教えてください

Aベストアンサー

はい、フォームのもとになっているクエリのデータが変わっても、更新行為をしないと反映されません。
具体的には、更新したいフォームに、コマンドボタンウイザードでフォーム→再表示を選択し、「再表示」ボタンを作ってみてください。押すとほら、更新されました。ボタン押し下げ動作を省略したい場合は、たとえば検索画面に戻るボタンがあるとしたら、そのボタンのクリック時イベントに、再表示ボタン内の主要ソースを貼り付ければ用を成すはずです。
但し、サブフォームをご利用の場合など、この方法がふさわしくない場合もあります。
確実に更新するには該当のフォームを閉じて開きなおすことです。マクロを作ってボタン化すれば少々画面がちらつくだけでそう不自然ではありません。
お試し下さい。

QAccessデータベースを外部から閲覧する方法はありますか?

パソコン超初心者です。
イントラネットで共有されているAccessデータベースを、外出先のPCや携帯電話から見れるよう(閲覧のみ、編集はできなくてよいです)にできるでしょうか?

SQL Serverに移行するという方法があるようなのですが、本当にパソコン初心者なので、どのようにしたらいいかわかりません。
また、社内の多くの人もパソコンにあまり詳しくないので、データの閲覧方法が複雑なものは導入しても使ってもらえないと思われます。

また、外からデータを閲覧するのは最大でも5~10人程度で、会社の規模も10人程度の会社ですので、かなり大がかりなシステムの導入は非現実的であると考えています。

何かよいシステムや運用方法があれば教えて頂きたいです。
宜しくお願いいたします。

Aベストアンサー

PCからなら、ExcelでAccessのMDBファイルが開けますが?
「開く」で「ファイルの種類」から「Accessデータベース」
を選択して下さい(スクロールすると下の方にあります)。
開きに行くときに、mdb内のテーブルやクエリを指定します
ので、必要な部分だけを表示するクエリを作っておくといいと
思います。

ただ、問題は「外出先から社内のファイルを開く」という
問題です。セキュリティ上一筋縄じゃいきませんよ、これ。
VPNで繋ぐにしても、相手が携帯じゃ・・・。

サーバ側でAccessのテーブルをExcelで落として、毎日メール
で「.xlsファイル」を送る、とかの方が現実的だと思います。

Qテーブル削除クエリ

テーブル作成クエリはあるけどテーブル削除クエリはないのでしょうか?
ADOXで削除するしかないですか?

Aベストアンサー

クエリーのSQLビューで、下記の様なSQLを入力して保存すると、一種のテーブル削除クエリができますね。
DROP TABLE Table1;
データベースウィンドウで右クリックする方が早そうな...
VBAからなら、下記で実行できました。ご参考まで。
Sub Sample()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q_Table1削除"
DoCmd.SetWarnings True
End Sub

QACCESSのクエリーで元のデータベースにレコードほ追加したい

クエリーで作成したデータベースに、違ったクエリーを使い、そのデータベースにレコードを追加して行きたいのですが、どうすればよいのか手順をご教授お願いします。 ここだけが出来ないので困っています。 宜しくお願いします。

Aベストアンサー

>クエリーで作成したデータベース
これは仮想のもので、クリックするごとに毎回作り直されます。
だからデータベース(テーブルとはいえないことははっきりしている)と言えるかどうか、疑問があります。
>違ったクエリーを使い
選択クエリですか。はじめとどのように違った条件なんでしょうか。
たとえば、はじめは東京在住の人、次は千葉県に在住の人、これらを合わせて、テーブルを作るのでしょうか。フィールドの数や内容は両者で同じですか。
それ(同じ)なら条件をOR条件にすればよい。
東京の人のテーブル、千葉の人のテーブルが出来上がっていて、両者を合体させたいのでしょうか。
●クエリは簡単にテーブル化できるのをご存知ですか。
>クエリーでテーブルを作成するのですね、に対し「できる」のであって
必ずするものではない。
テーブルは入力やインポートでできるのが普通で、クエリで必ず作るものでは
ない。
●追加クエリというのがあるので、本で調べてください。
http://www.mahoutsukaino.com/ac/ac2000/ac2000/actionq/action02.htm
●ユニオンクエリというのもあります
http://www.nurs.or.jp/~ppoy/access/access/acQ008.html
>余り、ほとんどACCESSを知らないもので・
このため質問の真意が伝わりにくい。
むしろ「したいこと」を、できるだけさらけ出して、自分のやっている方法は控えめにして、質問したほうが、よい助言がもらえるでしょう。変に知ってる方法を質問の中に混ぜるより、この方法をお勧めします。

>クエリーで作成したデータベース
これは仮想のもので、クリックするごとに毎回作り直されます。
だからデータベース(テーブルとはいえないことははっきりしている)と言えるかどうか、疑問があります。
>違ったクエリーを使い
選択クエリですか。はじめとどのように違った条件なんでしょうか。
たとえば、はじめは東京在住の人、次は千葉県に在住の人、これらを合わせて、テーブルを作るのでしょうか。フィールドの数や内容は両者で同じですか。
それ(同じ)なら条件をOR条件にすればよい。
東京の人...続きを読む

QAccessの削除クエリについて

『先月分のデータを全て削除』という削除クエリを作りたいのです。
本を見ても、
『指定した日の○日前の分までのデータを削除する』はあるのですが・・・・。

例えば、
5月5日にクエリを実行しても、5月10日にクエリを実行しても、4月30日以前のデータが削除されて欲しいのですが。
よろしくお願いいたします。

Aベストアンサー

>『先月分のデータを全て削除』
ということであれば下記条件で削除クエリを作成
すればできます。
---
フィールド:式:Month([対象日付フィールド])
抽出条件:Month(DateAdd("m",-1,Now()))

QAccess データベース新規作成時のエラー

Access2007にて空のデータベースを新規作成する際、
 「オブジェクト ライブラリは登録されていません」
のメッセージが表示されてしまいます。
そのためかどうかわからないのですが、その後テーブルを作成し、デザインビューでフィールド
プロパティを編集するため定型入力の[…]ボタン押下すると、
 「DLL 読み込み時のエラーです。」
のメッセージが表示され、空の定型入力ウィザードが起動されてしまいます。

Officeの再インストール以外で、何か対処方法がありましたら教えていただけないでしょうか。

Aベストアンサー

うまくいく自信はないけど、参照設定で
Microsoft Access 12.0 Object Library
のチェックを入れなおしてみると何か変わるかな?
(一旦はずして保存再度開いてチェックを入れる)

Qアクセスのクエリでレコード削除ができません。

アクセス超初心者です。

テーブルを商品コードでくっつけて、クエリのデザインビューで表示しました。

いらないレコードを削除しようとしたところ、できません。

くっつける前の、テーブルではできますが、クエリで実行させ、レコードを削除しようとしたところできません。

どうしたらよいのか教えてください。

あと、もうひとつ、クエリで、出力したいフィールド名をドラッグしたあと、削除したいときには、どうすればよいでしょうか?

表示しないなら、できるのですが・・・。削除がわかりません。

よろしくお願いいたします。

Aベストアンサー

二つのテーブル構造が不明
クエリのSQL文も不明
サンプルデータ

以上三点が分からないと回答のしようもありません。
SQL文はクエリをデザインビューで開いて
その上で右クリックすると現れるコンテキストメニューに
SQLビュー が有りますので切り替えると
SELECT ・・・・ てのが有りますのでコピーして此処に貼り付けできます。

クエリはSQL文を分かりやすいように作られたモノで実体はSQL文です。
掲示板ではこのSQL文でやり取りをします。
さて、なぜ削除できないかというと、そのように作ってしまっているからです。
このリンク先の説明を理解すれば原因が突き止められます。
クエリのデータを編集できない状況
http://office.microsoft.com/ja-jp/access-help/HA010097876.aspx

フィールドの削除は、Access2010の場合なら
リボンの中に「列の削除」が有ります。
または、フィールド名の少し上にマウスカーソルを持って行くと
下向きの太い矢印になるのでクリック、列全体が反転しますので Deleteキーで削除
なお、次回からはAccessのバージョンも明記しましょう。

二つのテーブル構造が不明
クエリのSQL文も不明
サンプルデータ

以上三点が分からないと回答のしようもありません。
SQL文はクエリをデザインビューで開いて
その上で右クリックすると現れるコンテキストメニューに
SQLビュー が有りますので切り替えると
SELECT ・・・・ てのが有りますのでコピーして此処に貼り付けできます。

クエリはSQL文を分かりやすいように作られたモノで実体はSQL文です。
掲示板ではこのSQL文でやり取りをします。
さて、なぜ削除できないかというと、そのように作ってしまっているか...続きを読む

QAccess2000をベースにWebデータベースを立ち上げたい

Access2000をベースにWebデータ-ベースを立ち上げたいと思っています。
WindowsNT,Windouws2000+ASP+FrontPage 対応の
安価なレンタルサーバーも見つけました。
現在は、素人ながら、自分でAccess2000にてDBプログラム中ですが、WEBに載せるためのCGI(ASP)やセキュリティーなど、全ては手が回らないと思っています。
(FrontPageの部分については、これから購入の上、トライ
してみようとは思いますが)
割安でこの当たりのところ、ご協力いただける方,会社ないでしょうか?

Aベストアンサー

只、私は試した事が無いので、一概に無理ですと断言は出来ませんが、今までの経験からのアドバイスです。

Access2000をベースにどのようなWebを立ち上げたいと思っているのかわかりませんが、Accessは所詮Accessですよ。データ件数にもよるとは思いますが、すぐファイルが壊れて苦労するのではなかろうかという気がするのですが。
NTベースのサーバーを立てている所で、オプションでSQLサーバーを使用出来る所もあったと記憶しています。
後々の拡張性、メンテナンス、知識の蓄積等を考慮すると、なにもAccessで苦労する事無いと思うのですが。

又、金銭的に安く済まそうという事でしたら、Perl、PHP、PostgreSQL等の選択肢もあると思います。AccessでWEBを考慮した書籍よりも、参考になる本は数多く存在しますし、WEB上にも情報が数多く残っていると思うのですが。


人気Q&Aランキング

おすすめ情報