![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
環境:ACCESS 2000 Win 2000
ACCESSで顧客データベースを作成しています。
・顧客データの件数は約6,000件
・テーブルの数は19
・テーブルのみのデータベースAとそのテーブルからリンクをしてデータを抜いてきているデータベースBとAのテーブルのみをリンクしているデータベースCがある
・Aにはテーブルのみで、データを蓄積する目的のみに使用
・Aはローカルではなくサーバー上にある
・Bはデータ入力用で複数の人で使う場合もある
・Cは別のソフトからAのデータを呼ぶためにある
上記の状態でBの入力用データベースを触っているのですが、フォームの保存やフォームを開くときなどにすごく時間がかかります。長いときは4・5分かかってしまいます。
このようにACCESSのレスポンスが悪くなるのはどういうことに原因があるのでしょうか?
あまり詳しい状況の説明ができていなくて、分かりにくいかと思いますが、どなたか教えてください。
No.2ベストアンサー
- 回答日時:
何か、フォーム側の処理で重い事をしているのでしょうかねぇ。
例えば、インデックスが効かない様な重いクエリを作ってしまって、その結果を表示させたりしてるんじゃないでしょうか。
あるいは、クエリ中でテーブルの結合の仕方をミスって、すんごい量のレコードを引っ張ってくるようになってしまっているとか。
そうであれば、クエリの部分を出来るだけ軽くすればいいんですよね。
あとは、ネットワークに流れるデータ量を最小にすることです。高々6千件のデータ量であっても、複数人数が同時に使うとなると、かなりのトラフィックになります。
レコードソースにテーブル名を指定しただけの単純なフォームだと太刀打ちできないかもしれません。(だって、フォームを開いたすべての人に、要りもしないデータを6千件、送りつけるんですよ。)
もし入力専用のフォームでしたら、プロパティの「データ入力用」を設定してやればいいでしょう。
入力も照会もというのであれば、例えば、こんな感じにするといいでしょう。
まず、検索用フォームと表示/入力用フォームとを分けて作ります。
表示/入力用フォームは常にデータを1件だけ表示するようにします。(顧客No等で絞り込んだSQLを、フォームのレコードソースに設定します。)
フォームに他の人のデータを表示したいときには、
検索用フォームを起動して、条件で絞り込んで検索→該当する人を一覧表示(*1)→その中から一人を選ぶ→選んだ人を表示するようなSQLを組み、表示用フォームのレコードソースに設定する。
ってな感じでしょうか。
*1:絞込みをする際に、Top句を使用すれば、大量のデータが返ってくるような検索条件を指定されても、重くなる前に対処できます。
まずは、重いクエリを軽くすること、次に、ネットワークのトラフィックを最小にすること。この二つを行えば、かなり快適になると思うんですが。
クエリの見直しをしたら、かなり早く動くようになりました。
あとはネットワークに流れるデータ量の方も最小にできるよう頑張ってみたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessフォームが入力できません。
-
前のレコードの値を自動で入れたい
-
アクセスでコードを入れると名...
-
Accessでデータを更新したらそ...
-
入力した値をコンボボックスに...
-
ACCESSでフォームのチェックボ...
-
AccessVBAの値によっ...
-
ACCESS2000の帳票フォームでテ...
-
ACCESS フォームで入力データ...
-
access別のテーブルを参照して...
-
Accessフォーム上の値を条件と...
-
フォームのテキストボックス→ク...
-
インデックスまたは主キーにはn...
-
テキスト型のフィールドでハイ...
-
アクセスのフォームの必須項目...
-
Access サブフォームでの選択行...
-
エクセルで、抽出したデータだ...
-
AccessでIDを入力したら他の項...
-
ACCESSでVBAから選択クエリの抽...
-
帳票フォームでのあるコンボボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
access別のテーブルを参照して...
-
インデックスまたは主キーにはn...
-
Accessフォームが入力できません。
-
ACCESS フォームで入力データ...
-
access ダブリ登録を防止したい
-
ACCESSでフォームのチェックボ...
-
AccessVBAの値によっ...
-
アクセスでコードを入れると名...
-
入力した値をコンボボックスに...
-
テキスト型のフィールドでハイ...
-
「バリアント型でない変数に Nu...
-
Accessでフォームに自動入力し...
-
ACCESS2000の帳票フォームでテ...
-
accessでオプションボタンを使...
-
Accessで時間外管理の作成について
-
Access 自動入力の解除方法
-
Accessで、最後(更新)にエラ...
-
アクセスでの登録ボタンでの処...
おすすめ情報