※Accessをクラサバで使用することについての是非はここでは触れない。
簡易システムであれば気にするほどのことでもないパフォーマンス(レスポンス)も、
それなりに作り込んだものになると驚くほどパフォーマンスが低下することがある。
いや、低下する。
現在作成しているシステムが想定外の規模になり、リンクテーブルのパフォーマンス(レスポンス)が
著しく低下したため解決策をネット上で検索してみた。
リンクテーブルを使用しているクエリ内で定義域集合関数等を使わない・・・などの情報があるが、
今回の筆者のケースではほぼ全テーブルがリンクテーブルであるためにどうしようもない。
以下は対処可能と思われる解決策
1.リンクテーブルを開きっぱなしにする。
マルチユーザー環境で使用する場合、リンクテーブルを使用する必要がある処理を行うたびに
ロックファイル(*.ldb)の作成および削除が行われる。
ダミーテーブルをデータ用MDBに作成しておき、クライアント用MDBにこれをリンク。
クライアント用MDBの起動時にOpenRecordsetでこのダミーテーブルを開きっぱなしにすることで
ロックファイルの作成/削除を省くことができるそう。
http://office.microsoft.com/ja-jp/access-help/HP005187453.aspx
2.テーブルのプロパティ(サブデータシート名)を「なし」にする。
Access2000から実装された「サブデータシート」。
テーブル同士のリレーションを設定しておくと、テーブルのデータシートビューを開いた時に
サブデータシートとして連結されたテーブルの内容を表示できるというもの。
通常、普通にテーブルを作成した場合には「サブデータシート名」を意識することはなく、
デフォルトでこのプロパティが「自動」に設定される。
これを「なし」に更新することでサブデータシートの読み込み(?)にかかる負荷が軽減されるらしい。
筆者のケースではユーザーが安易にマスタデータを削除できたりしないようにリレーションが
貼りまくられているため、もしかしたら有用かもしれない。
http://support.microsoft.com/default.aspx?scid=kb;ja;261000&Product=accJPN
- 関連記事
-
- Accessだからこそ
- 物理削除と論理削除
- オプショングループがおかしい・・・
- リンクテーブルのパフォーマンス向上策
- スタンバイに注意
スポンサーサイト