Accessを長期間使用していると、「以前より起動が遅くなった」「ファイルサイズが大きくなった」と感じることがあります。
このような場合に確認したいのが、Accessのデータベースの最適化/修復です。
本記事では、Accessデータベースを最適化する基本的な方法に加えて、Accessが重くなる原因、終了時に自動で最適化する方法、最適化しても改善しない場合の確認ポイントまで解説します。
Accessデータベースの最適化とは
Accessは、データの追加・更新・削除などを繰り返すことで、データベースファイルのサイズが大きくなることがあります。
このようなAccessデータベースを整理するために用意されている機能が、「データベースの最適化と修復」です。
「最適化」という名前からデータそのものを圧縮する機能のように思われるかもしれませんが、単純にデータを圧縮しているわけではありません。データベースファイル内部の不要になった領域を整理することで、ファイルサイズを小さくします。Microsoftも、最適化処理はデータそのものを圧縮するものではなく、未使用領域を除去する処理と説明しています。
また、「最適化と修復」という名称のとおり、データベースファイルに問題が生じた際の修復にも利用されます。Microsoftは、データベースファイルが破損する場合があり、「最適化と修復」がこうした問題の防止や修復に役立つとしています。
そのため、Accessを長期間利用していて、
- ファイルサイズが以前より大きくなった
- データの追加や削除を頻繁に行っている
- データベースの動作が以前より遅く感じる
- データベースファイルの状態を整理したい
といった場合には、「最適化と修復」を確認してみる価値があります。
ただし、「Accessが重い=必ず最適化で解決する」というわけではありません。
Accessが遅くなる原因には、クエリやテーブル設計、ネットワーク環境など、データベースファイルの肥大化以外の要因もあります。
その点についても順番に確認していきましょう。
Accessが重くなる主な原因
Accessの動作が重くなった場合、最適化を実行する前に「なぜ重くなっているのか」を考えることが重要です。
特に確認したいのが次のようなポイントです。
データベースファイルが大きくなっている
Accessのデータベースファイルは、使用を続けることでサイズが大きくなることがあります。
レコードを削除したからといって、必ずしもファイルサイズがその場ですぐ小さくなるわけではありません。
こうした場合には「最適化と修復」を実行することで不要な領域が整理され、データベースファイルのサイズが小さくなる可能性があります。
大量のデータを処理している
テーブルのレコード数が増えたり、大量のデータを対象としたクエリを実行したりすると、当然ながら処理に時間がかかる場合があります。
この場合には、単に最適化を実行するだけではなく、
- 不要なデータを整理する
- クエリの処理内容を見直す
- 適切なフィールドにインデックスを設定する
- VBAで同じ処理を何度も繰り返していないか確認する
といった検討も必要になります。
フォームやクエリの処理に時間がかかっている
Accessそのものが遅いのではなく、特定のフォームやクエリだけが遅くなっていることもあります。
例えば、
Accessの起動は速い
↓
特定のフォームを開くと遅い
のであれば、データベース全体よりも、そのフォームのレコードソースやクエリなどに原因がないかを確認した方がよいでしょう。
つまり、
Accessが重い → とりあえず最適化
ではなく、
何が遅いのかを確認 → ファイル肥大化が疑われる場合は最適化 → 改善しなければ設計や処理を確認
という順番で考えることをおすすめします。
それではデータベースの最適化の方法について見ていきましょう。
Accessデータベースを最適化する方法
まずは、しばらくデータベース運用によりファイル容量が大きくなったファイルを図1に示します。図1で示すように、最適化前のファイルサイズは11MBであることが分かります。

データベースの最適化をするために、最適化したいAccessファイルを開き、図2に示すように「データベースツール」タブの「データベースの最適化/修復」をクリックします。なお、最適化を実行する前には、できるだけバックアップを作成しておくことをおすすめします。
特に業務で使用している重要なAccessファイルであれば、最適化前のファイルを別名で保存しておけば、万一問題が発生したときにも元の状態へ戻しやすくなります。
Microsoftも、「最適化と修復」の実行直前にバックアップを作成することを推奨しています。また、最適化と修復にはデータベースファイルへの排他的アクセスが必要です。
複数人で共有しているAccessデータベースの場合は、他のユーザーがデータベースを使用していないことを確認してから実行しましょう。

これにより、データベースの最適化が開始され、しばらくすると処理が完了します。一度Accessファイルを閉じ先ほどと同様にファイルサイズを確認すると図3のようにファイルサイズが7MBまで減っていることが分かります。

このようにして、データベースの最適化を図ることができました。
ここまでで紹介した内容は、手動で実施することになりますが自動で最適化をするように設定することができます。
データベースを閉じるときに自動で最適化・修復をする設定方法
Accessデータベースを閉じるときに、自動で最適化・修復が実行されるようにする設定方法は以下のとおりです。
図4に示すように「ファイル」、「オプション」の順にクリックします。

図5に示すようにAccessのオプション画面が開くため、「現在のデータベース」を選択し、「閉じるときに最適化する」にチェックを入れます。そして「OK」をクリックしてください。

「OK」をクリックすると、図6に示すメッセージボックスが表示されますので、データベースを閉じてもう一度開き、オプションを有効化します。

その後はAccessファイルを閉じる都度、自動で最適化が実行されるようになります。
以上が自動で最適化が実行されるための設定方法となります。
Accessの最適化に時間がかかる場合
「最適化を実行したが、なかなか終了しない」ということもあります。
最適化と修復ではデータベースファイルを整理する処理が行われるため、データベースの状態によって処理時間は異なります。
特に重要なのは、途中で処理を強制終了する前に、現在のデータベースの状態を確認することです。
また、業務用データベースの場合は、最適化に何分程度かかるのかを一度測定しておくと運用しやすくなります。
Microsoftも、定期的に最適化と修復を行う場合には処理時間を記録しておくことで、他のユーザーにデータベースを使用しない時間を適切に案内できるとしています。
例えば共有データベースなら、
昼休みに最適化する
業務終了後に実施する
月末のメンテナンス時間に実施する
など、他のユーザーが利用していない時間帯に実施する運用も考えられます。
毎回極端に時間がかかる場合には、最適化だけを繰り返すのではなく、データベースのサイズやテーブル構成、クエリ、ネットワーク環境なども確認してみましょう。
最適化してもAccessが重い場合
「最適化と修復」を実行しても、Accessの動作速度が改善しないことがあります。
これは必ずしも異常ではありません。
最適化はデータベース内部の未使用領域を整理し、ファイルサイズやデータベースファイルの問題を改善するための機能です。Accessのすべてのパフォーマンス問題を解決する機能ではありません。
最適化しても改善しない場合は、次の点を確認してみてください。
クエリの実行に時間がかかっていないか
特定のクエリだけが遅い場合は、抽出条件、結合方法、集計処理などを確認します。
インデックスを設定できないか
検索や結合で頻繁に使用するフィールドについて、インデックスの設定が適切か確認します。
VBAで大量のレコードを1件ずつ処理していないか
VBAのループ処理で大量のレコードを更新している場合などは、処理方法そのものを見直した方が速くなることがあります。
フォームのレコードソースが大きすぎないか
フォームを開いた瞬間に大量のレコードを読み込んでいる場合、必要なレコードだけを取得できないか検討します。
ネットワーク上の共有データベースか
ネットワークや複数ユーザーで利用している場合は、データベースファイルそのもの以外の要因も考慮する必要があります。
またMicrosoftは、データベースを分割し、データをユーザーが直接アクセスしない別ファイルに保持することが、ファイル破損防止やデータ損失の抑制に役立つと案内しています。
「最適化しても重い」という場合こそ、データベース設計や処理方法を見直すタイミングと考えるとよいでしょう。
Accessを最適化するときの注意点
Accessの「最適化と修復」は便利な機能ですが、業務で使用しているデータベースでは、いきなり実行するのではなく事前準備をしておくことが重要です。
最低でも次の3点を確認しましょう。
1.バックアップを取得する
最も重要です。
Microsoftも、修復処理によって破損したテーブルから一部のデータが切り捨てられる場合があるため、処理直前のバックアップを推奨しています。
重要なAccessデータベースでは、
バックアップ → 最適化と修復 → 動作確認
を一連の作業として考えることをおすすめします。
2.ほかのユーザーが使用していないことを確認する
最適化と修復にはデータベースファイルへの排他的アクセスが必要です。共有データベースでは事前にユーザーへ周知し、利用していない時間帯に実施しましょう。
3.処理後の動作を確認する
最適化が終了したからといって、そのまま通常運用へ戻すのではなく、
- 主要フォームが開くか
- クエリが正常に実行できるか
- データを追加・更新できるか
- レポート出力に問題がないか
など、普段よく使用する機能を簡単に確認しておくと安心です。
特に業務用Accessデータベースでは、最適化そのものより「バックアップと実施後確認を含めた運用」を決めておくことが重要です。
まとめ
Accessを長期間使用していると、データの追加・更新・削除などによってデータベースファイルが大きくなることがあります。
そのような場合に利用できるのが、Accessの「データベースの最適化と修復」です。
最適化を実行することで未使用領域が整理され、ファイルサイズの縮小やパフォーマンス改善につながる場合があります。また、データベースファイルに問題が生じた場合の修復にも利用できます。
基本的には、
① バックアップを取得する
↓
② 他のユーザーが使用していないことを確認する
↓
③ データベースの最適化と修復を実行する
↓
④ 実行後の動作を確認する
という流れで実施するとよいでしょう。
ただし、Accessが重くなる原因はファイルサイズの肥大化だけとは限りません。
最適化しても改善しない場合には、クエリ、テーブル設計、インデックス、VBA、フォームのレコードソース、共有方法など、データベース全体の構成を見直すことも重要です。
「Accessが重いから最適化する」だけで終わらせず、
最適化と修復はAccessを安定して運用するためのメンテナンスの一つ
として考えるとよいでしょう。
スポンサーリンク


コメント