• 締切済み

Accessの運用について

マクロソフトAccess2003でデータベースをネットワーク上で運用しています。データ用のmdbファイルをネットワーク上に置き、クライアントはリンクテーブルを張ったmdbファイルをデスクトップ上において使用しています。 一般的にはスタンドアロンで使用すべきソフトであり、パフォーマンスの低下等の問題が出てきたらアップサイジングが推奨されていると思います。 そこで素朴な疑問が生まれました。 たとえば、Accessデータベースを運用していて3万件のレコードでは問題なく稼動しており5万件を過ぎたあたりでパフォーマンスが低下して使い物にならなくなったとします。 パフォーマンスが低下しないで運用できる確実なレコード数は4万件とします。 そこで、レコードが4万件に達した時点でテーブルを分割します。今までのテーブルを【テーブルA】とし、分割後のテーブルを【テーブルB】とします。 繰り返しになりますが、【テーブルA】が4万件になったらこれを分割して【テーブルB】を設置して各2万件のテーブルとします。 2万件に分ける基準はあるフィールドを基準とし、運用上は検索の第一条件として、この条件決定後にレコードソースを【テーブルA】にするか【テーブルB】にするか決めるようにVBAで指示します。 【テーブルA】か【テーブルB】のどちらかが4万件に達した時点で同様のテーブル分割を行い【テーブルC】、【テーブルD】・・・・・と繰り返していけばレコード数増加によるパフォーマンス低下問題はずっと回避できると思うのですがいかがでしょうか? もちろんAccessは2Gのファイルサイズ制限がありますから、ファイルサイズが影響するパフォーマンス低下と判断すればバックエンドのmdbファイルも分割します。 なにぶんAccessの運用経験1年程度ですので、もしかしたら頓珍漢な発想かなと思い心配です。 ベテランの方々からのアドバイス・ご意見を頂きたいです。 よろしくお願いします。

みんなの回答

noname#204159
noname#204159
回答No.1

テーブルを増やせば、パフォーマンスは落ちます。 (参照領域が広がるだけですから) レコード数の増加を防ぐためには、不要レコードを削除する機能 性能を上げるには、キーIDをはじめとしたTBL再設計が必要です。 1レコードのサイズにもよりますが、 Accessは数万レコードではへこたれませんよ。 TBLとファイルの考え方を身に着けてください。

manbobobo
質問者

補足

抽出対象をひとつのテーブルに限定した上で再度抽出をかけるという発想です。 要するに、【テーブルA】もしくは【テーブルB】のどちらかに限定する一段階目の抽出をかけ、その後サイド抽出をかけるということです。 【テーブルA】にだけ再抽出をかけるとしても【テーブルB】も参照領域として認識されてしまうということなのでしょうか? 再度ご回答いただければ幸いです。 よろしくお願いします。

関連するQ&A

  • MS ACCESS でのメッセージについて

    お尋ねします。 アクセスの2003を使っています。 アクセスでA.mdbというファイルからB.mdbへテーブルをエクスポートしたのですが、「指定した名前は、このデータベースに含まれる同じ種類のオブジェクトで使われています。」というメッセージが出ます。 B.mdbのテーブルを置き換えたいので、OKをクリックすれば、次へ進むのですが、このメッセージを出さない方法はありますでしょうか。 ツール→オプション→編集で、レコードの変更、オブジェクトの削除、アクションクエリには、チェックボックスにチェックは外しております。 よろしくお願いします。

  • Accessでの理想の運用形態

    はじめまして、Accessで業務用アプリケーションを作成しています 独学なので、何が正しいというものを分からず、 主にインターネットの情報を元に作成しています そこで、まずテーブルとそれ以外(クエリ、フォーム、レポートなど)を分割し、テーブルだけのmdbはファイルサーバー上に置いています 利用者のパソコンのデスクトップに、それ以外のmdbを置いています 接続はテーブルのリンクのみです ですので、利用者のmdbを開くと同時に、ファイルサーバー上の mdbも開き、ldb(ロックファイル)も生成されます これをファイルサーバー上のmdbを開かずに、テーブルのデータを 取得することは可能でしょうか DAOとかADOでVBAを使わなければならないのでしょうか アドバイスよろしくお願いします ちなみに、SQLServer2005ExpressEdtionをどこかのパソコンに インストールし、データベース環境を一新しようと思ったのですが どうすればいいのかがイマイチ分かっていません ヒントでもいいので、教えていただけないでしょうか

  • ACCESSデーターベースの分割

    OS: Windows 2000 version: Access 2003 ACCESSでデーターベースを構築し運用していますが、破損が頻繁に起こり、 全員がいったんデーターベースを閉じ修復を行うまで、新しいユーザーがデーターベースを開けなくなってしまいます。 現在、ユーザーは5名ほどです。 過去の質問を読んでいますととにかくテーブル側とフォーム側に mdbファイルを分割せよとの皆さんおっしゃっておられますので試したところ、処理速度が格段に遅くなってしまいます。 一つのフォームを開くのに15秒以上かかることもあります。 このような問題はみなさんどうやって解決されているのでしょうか? 

  • Access2000で困ってます

    お世話になります Access2000で困っています あるデータベース(A)でVBAをさわっていたら おかしくなってしまいました そこで一週間ほど前にBackupのつもりで ファイル名を変えて保存した同じデータベース(B)を 使おうと思うのですがこの一週間であるテーブルのデータを 変更しています どのレコードのどのフィールドを変更したのかわかりません そこでデータベース(A)のテーブルとデータベース(B)のテーブルを 比較照合したいのですがどうすればうまくできるでしょうか? アドバイスお願いします

  • Accessのファイルサイズ縮小について

    Access 2000で作成したmdbファイルを Access 2013環境で使用しています。 ・テーブルのみのmdbファイル(1)があります。  mdbファイル(1)の中には、テーブルオブジェクトが1つあり、フィールドが1つ、  フィールドサイズは255です。レコード件数は、36万5000件程度あります。 ・フォームやクエリ、マクロ、mdbファイル(1)と  リンクテーブルでつないでいるmdbファイル(2)があります。 mdbファイル(1)のファイルサイズが、90MBに達しており mdbファイル(2)を開いたり、何か処理させるのを遅くしているのではないか と思っています。 他の方の質問をチェックしましたが、結果は 最適化について  オプション→現在のデータベース→閉じるときに最適化する→チェックON済み  手動で最適化する→変化なし。 MDBをMDEに変換する  Access 2013では、バージョンが違うので変換できないようです。  accdb形式に変換→accde形式に変換しましたが、変化なし  (そもそも、ファイル(1)はテーブルのみで、マクロやプロシージャは無いので、  意味が無かったかも) となっており、対処法が見つからなくて困っています。 何か良い案はないでしょうか。

  • ExcelからAccessデータを検索するマクロ

    ExcelのA1セルにある値をAccessのデータベース (ファイル名:abc.mdb、テーブル名:Tbl_a)の フィールド1から検索し、対応するレコードの フィールド2の値をExcelのB1セルに書き込む というマクロはどのように書けばよいのでしょうか? Excel, Accessともに2000です。 よろしくご教授お願いします。

  • Accessのテーブルへのリンク

    いま、ASPのDBとして使っているAccessのファイル A.mdbがあります その中の一つのテーブルを別のAccessファイル B.mdbにリンクして、参照したいと思っています。 しかし、B.mdbからリンクするときに インポートすると、A.mdbの変更が反映されず、 リンクすると、B.mdbで変更したものがA.mdbにも反映されて困っています. やりたいことはB.mdbから安全に(変更なしで)A.mdbのテーブルを 閲覧したいのです. ・A.mdbの変更をB.mdbに反映したい ・B.mdbのテーブルの変更はA.mdbに影響がない と言うことです. どうかお力添えを よろしくお願いします.

  • Access2000の追加クエリ(INSERT句)について

    Access2000で作成したmdbファイルAから他のmdbファイルBにあるテーブルデータを取得して、mdbファイルAのテーブルにこのデータを追加する構文として、 DoCmd.RunSQL "INSERT INTO テーブル1 SELECT * FROM テーブル2 IN ""Z:\mdbファイルB.mdb""", -1 を記述して使用していますが、mdbファイルB.mdbにデータベースパスワードを設定すると、「実行時エラー・パスワードが正しくありません」のエラーが発生します。 接続先のmdbファイルBにパスワードを設定した状態で使用したいのですが、何かよい解決策はないでしょうか? なお、上記のとおりパスワードを設定した状態でテーブルにデータを追加できさえすればどんな方法でもかまいませんのでご教授願えないでしょうか。 よろしくお願いします。

  • access2010のテーブルのコピー&ペースト

    access初心者です。似たような質問を探しましたが見つけることができなかったため、質問致します。 1つのPC内に同じデータソースから2つのデータベースファイル(仮にファイル名をAとBとします)を作成しています。 以前access2000を使用していた時はAのファイルは随時更新され、Bのファイルは月末にAのテーブルをBのファイルのテーブルに全コピーしていました。 最近accessを2010に変えたところ、テーブルのコピペができなくなり大変困っています。 以前(2000)の方法としてはAのテーブル画面の左上角の三角形の所を選んでコピー、一旦Aのファイルを閉じてBのファイルを開き、テーブル画面の同じ左上角の三角形を選んでペースト で常にうまくいっていましたが、2010ではできないようです。 貼り付けも、普通の貼り付け・形式を選択して貼り付け(Data Records・文字列・CSV)・追加貼り付けなどいろいろやってみましたができませんでした。 どうもコピーはできているようなのですが、貼り付け時に左上角の三角形を選択しても1番上のレコードにしか貼り付けられない感じ(わかりにくいと思いますがうまく言い表せません)です。 8000件くらいのレコードなので、分割してコピー&ペーストするのも大変で、途方にくれています。 どなたか解決方法をご存知でしたら、教えていただけないでしょうか? よろしくお願い致します。

  • ACCESS アクセスで他のデータベースからのデータインポート

    アクセスど初心者です。 Aというデータベースファイルにあるテーブルaのデータを、Bというデータベスファイルにあるテーブルbに インポートできますか?フィールド等詳細は両テーブルとも一緒だとします。 イメージ的には、テーブルbの最終レコードの後にテーブルaのデータがくっつくという感じです。 コピー&ペーストだとエラーになってしまうのですが・・・。宜しくお願いします。

専門家に質問してみよう