- 締切済み
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年程度ですので、もしかしたら頓珍漢な発想かなと思い心配です。 ベテランの方々からのアドバイス・ご意見を頂きたいです。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
テーブルを増やせば、パフォーマンスは落ちます。 (参照領域が広がるだけですから) レコード数の増加を防ぐためには、不要レコードを削除する機能 性能を上げるには、キーIDをはじめとしたTBL再設計が必要です。 1レコードのサイズにもよりますが、 Accessは数万レコードではへこたれませんよ。 TBLとファイルの考え方を身に着けてください。
補足
抽出対象をひとつのテーブルに限定した上で再度抽出をかけるという発想です。 要するに、【テーブルA】もしくは【テーブルB】のどちらかに限定する一段階目の抽出をかけ、その後サイド抽出をかけるということです。 【テーブルA】にだけ再抽出をかけるとしても【テーブルB】も参照領域として認識されてしまうということなのでしょうか? 再度ご回答いただければ幸いです。 よろしくお願いします。