• ベストアンサー

ACCESSで容量が50MBになったので軽くしたい

ACCESSでDBを作成したのですが、 容量が重く動作も重たいです。 中身は、テーブルが1万件~5万件のデータが4つと フォームが1つしかありません。 ツール→データベースユーティリティ→最適化 をしましたが、変わりません。 どうしたらいいのでしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.5

件数が5万件、容量が50MB程度ならまだ軽い方です。 ちなみにテーブルにはすべて主キーは設定してあるでしょうか? 主キーがないとデータの検索時に時間がかかり、 その時間はデータ量が増えるほど飛躍的に増加していくはずです。

smorgas030
質問者

お礼

主キーはすべて設定しています。 まだ軽いほうなんですね。 ありがとうございました。

その他の回答 (6)

  • yu_tang
  • ベストアンサー率81% (26/32)
回答No.7

参考URLと関係有るかもしれません。 [ACC2000] サイズの大きなテキスト ファイルをインポートするとデータベース サイズが予想以上に増大する 複数ユーザーの同時書き込みを考慮しなくていいなら、 レコードレベルロックのオプションを外して最適化して みることと、Unicode 圧縮を有効にしたテーブルに インポートしてみることを試してみては(もう既に 試行済みかもしれませんが)。

参考URL:
http://support.microsoft.com/kb/239527/ja
smorgas030
質問者

お礼

URLを参考にしてみます。 ありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

>容量が重く動作も重たいです。 動作が重くなるほどの容量ではないですね 動作が重いのは別の原因じゃないですか 容量に関しては最適化しても小さくならないようなら 不要なレコードを追い出すか、設計を変えるしかないでしょう

smorgas030
質問者

お礼

不要なレコードは特にありません。 設計を変えるほど複雑なクエリを組んでいません。 回答ありがとうございました。

noname#79209
noname#79209
回答No.4

> テキストファイルからインポートするだけ フィールドが多数あって、すべてテキスト属性、文字数255になっているとか...

smorgas030
質問者

お礼

回答ありがとうございます。 フィールドも5個ほどで、テキスト属性は必要なものだけとなっています。

noname#182251
noname#182251
回答No.3

1万件~5万件程度で、それほど重くなるとは考えられません。 テーブルの設計やインデックスの付け方に問題はないでしょうか? あるいはクエリーの設計など。

smorgas030
質問者

お礼

テーブルはテキストファイルからインポートするだけで複雑なものではありません。 クエリも2つのテーブルをひもづけているだけで複雑ではありません。 何か原因があるのでしょうか。

noname#140971
noname#140971
回答No.2

補足: 2、フロントエンドを Access から プログラミング言語に変更する。 現行フォームの改善も広義には含みます。

noname#140971
noname#140971
回答No.1

解決策は2つに1つじゃないですか? 1、バックエンドを Access から SQL Sever 等に変更する。 2、フロントエンドを Access から プログラミング言語に変更する。 Access をデータベースを管理している部分とデータを参照しているアプリケーションとに分けて考えると・・・。 そもそも、データベースエンジンの性能が悪いと言えます。 そもそも、アプリケーションがデータを参照する仕組みに問題があると言えます。 ですから、Access が重い、遅いのは、2重の原因の結果。 どちらも解決するのが一番です。 が、どちらか一方でも解決するならば状況は一変します。

smorgas030
質問者

お礼

DBを変えるほど難しいことではなかったと思ったんですが。 現状で軽くする方法はないのでしょうか。

関連するQ&A

  • Access97をAccess2002にするには

    Access97で作成したmdb(オブジェクトは、テーブル(リンクテーブル有り)、クエリ、フォーム、レポート、マクロ(AutoExecのみ)、モジュールを使用)をAccess2002へ移行させようと思うのですが、単純に[ツール]→[データベースユーティリティ]→[データベースの変換]で良いものでしょうか。 もし、何か気をつけなければならないこと、やらなければならないこと等、または変換方法等をご教授いただけないでしょうか。

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • Accessで97形式のファイルのデータを2000形式に変換してしまった。

    社内でAccess97と2000を共有しているのですが、97のデータを 2000で開いたときに、誤って2000に変換して開いてしまったようです。 97側で開くと Form、******メニューが不正 (*****はフォームの名称) と表示され、開かず 2000からだと問題なく開きます。 以前過去ログにあった http://oshiete1.goo.ne.jp/kotaeru.php3?q=306289 を、参考にしようと思ったのですが、どうやらVBで動作しているらしく >Access2000でmdbを開いている状態で >[ツール]→[データベースユーティリティ]→[データベースの変換]→[Accessの旧バージョンの>データベースに変換]を順に選択して保存するとAccess97で開くことができます。 で、試そうとしたのですが、なぜか[データベースの変換]が表示されません。 開く時も自動で起動し、ツールバーの[ツール]が立ち上げて1秒くらいで消えてしまいます。 どのような設定をされているのか分りませんが、このDBの作成者が辞めてしまい、 Accessを解る人がいない状態です。私もまだ初心者で初級~中級で、実務 レベルではありません。VBが解らないといけないのかも知れないのですが。 他のAccessのDBとも連動(テーブルをリンクしている)しているので、 むやみにデータを取り出して入れ直すことも知識不足で手が出せない状態です。 2000に変換したDBファイルを97に戻す方法。 2000から [データベースの変換]→[Accessの旧バージョンの>データベースに変換]を順に選択して保存する  までを表示させる方法は無いでしょうか? アドバイス宜しくお願いします。

  • 重くなってしまったアクセスを軽くする方法

    アクセス2000で社内のデータ-ベースを作っています。 ようやくデータ-ベースが完成したので、データーベース分割ツールを使ってデーターベースをテーブルデータと、フォーム等に分割し、テーブルデータを社内のランのサーバーに置き、クエリ、フォーム及びレポートを各パソコンにコピーして皆で使えるようにしました。 とりあえず、動くのですが、動きが非常に重いんです。これは、どうすれば軽くなるのでしょうか?

  • ACCESSのレスポンス

    環境:ACCESS 2000 Win 2000 ACCESSで顧客データベースを作成しています。 ・顧客データの件数は約6,000件 ・テーブルの数は19 ・テーブルのみのデータベースAとそのテーブルからリンクをしてデータを抜いてきているデータベースBとAのテーブルのみをリンクしているデータベースCがある ・Aにはテーブルのみで、データを蓄積する目的のみに使用 ・Aはローカルではなくサーバー上にある ・Bはデータ入力用で複数の人で使う場合もある ・Cは別のソフトからAのデータを呼ぶためにある 上記の状態でBの入力用データベースを触っているのですが、フォームの保存やフォームを開くときなどにすごく時間がかかります。長いときは4・5分かかってしまいます。 このようにACCESSのレスポンスが悪くなるのはどういうことに原因があるのでしょうか? あまり詳しい状況の説明ができていなくて、分かりにくいかと思いますが、どなたか教えてください。

  • アクセスで困っています。

    アクセスでデーターベースを作成しているのですが、 エクセルからADOを使いテーブルにデータを入力し、フォームでデータ内容についての情報を見れるようになっています。 しかし、フォーム上でテーブルに連結してある情報の変更ができないのですが、どのように設定すれば、フォーム上でテーブルの情報を書き換えることができるのでしょうか? プロパティのデータ入力用は、「はい」でも「いいえ」どちらでやってもだめです。 テーブル ↓ フォーム (ここでデータを入力し、テーブル内容の変更をしたい。) よろしくお願いします。

  • ACCESSで質問です

    ACCESS2000でフォームからデータ入力→テーブルに書き込み部分を作成中なんですが、sqlを実行すると「テーブルが見つからない」ってエラーがでます… テーブルはちゃんと作ってあるし、カレントDBをセットしてあるし… 何が間違ってるんでしょう。助けてください~。

  • Access97とAccess2000での動作が異なるため、困ってます。

    Access2000で作成したデータベースを、Access97に変換して動作させたところ、 1枚のフォームだけ開く事ができません。 そのフォームには、サブフォームが3枚貼りつけてあり、さらにデータリフレッシュの為にリクエリーやリフレッシュなどが多く、かなり大きなフォームになっています。 Access97に落としたせいで、フォームが開けなくなることがあるのでしょうか。 また、それはどう回避すれば宜しいでしょうか。 ご存知の方に、教えていただきたく、宜しくお願いします。

  • Access、マクロの最後に最適化を入れられる?

    Access2003を使用しています。 マクロの最後に最適化を組み込むことは可能でしょうか? マクロの内容は、 1、昨日のデータ抽出に使用した作業用テーブル内のデータを削除する 2、本日のデータをインポートしてくる 3、1で空にしたテーブルに、2のデータを追加クエリで流し込む 4、2でインポートしてきたデータ(テーブル)を削除する です。 この後、「5、データベースを最適化する」を入れてマクロを終わらせたいのです。 インポートしてくるテーブルは8個あり、1テーブルに20万を超すデータが入っているため、インポート、追加をやっているうちに、データベースの大きさが1,126,528KBにもなってしまいます。 この後、この大容量のテーブルを使って、大容量のテーブルを作成しているうちに・・・・データベースは更に大きくなってしまい困っています。 マクロの最後に「ここで一旦最適化」を入れられないでしょうか? このデータベースを使用するのは自分で使用するものでないため、「マクロ終了後ツールボタンで最適化する」ということが出来ません。 また、VBAはわからないので・・・出来ればマクロなどで対応できると助かります。 どなたか詳しい方、教えてください!

  • ACCESS97 レポート。フォームが作れません

    ACCESS97で作成されたファイルのレポート。フォームが編集、新規作成ができません。 テーブル、クエリ、マクロはできます。 データベースウィンドゥのフォーム、レポートから 新規作成、編集ボタンが押せない状態になってます。 権限やセキュリティで引っかかっているのかと思って、【ツール】下の機能を見たのですが。 関係なさそうな気がします・・・・。 仕方ないので、必要なテーブルやクエリを別ファイルにインポートして、そちらで レポートを作成しています。 元データのファイルに組み込みたいのですが、やり方を教えてください・・・。