- ベストアンサー
Accessデータベースの最適化について
- Accessデータベースの最適化についてご質問させていただきました。最適化後のdbのサイズについて疑問があります。
- 最適化の方法としては、メニューにあるボタンを押すだけで行えますが、dbのサイズがほとんど変わらないという問題が発生しています。
- 直接データベースを開いて最適化を行うと、サイズが劇的に小さくなるのですが、ユーザーが直接アクセスすることを避けたいと考えています。解決策をご存知の方がいらっしゃいましたら、ご教示いただけますと幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
今、過去質問を見てきたのですが、 最適化しようとしているのはデータ.mdbの方ですよね。とすると、テーブルリンクしているだけのこのmdbのオブジェクトが肥大するということはないんじゃないでしょうか? 実施されたテストでは、何らかの方法でmdbのファイルサイズを大きくされたようですが、その過程でゴミが溜まり、その分がオブジェクトの最適化できれいになったという現象ではないでしょうか。 >データベースとオブジェクトを最適化するコマンド ・・・につきましては、他のmdbに対しての方法はないと思います。 というわけで、処理としてはこのままでよいと思います。ユーザに配布する前にメニューから「最適化」を実行し、運用中はVBAからCompactDatabaseを終了時に実行ということでよいのではないでしょうか。 なお、蛇足ながら >3.wk.mdbをa.mdb元データの名前でコピーします。 >4.wk.mdbを削除します。 ・・・という処理は、良くある最適化の手順では >3.a.mdb を削除 >4.wk.mdb を a.mdb にリネーム という手順をとることが多いようですよ。
その他の回答 (2)
- vantage
- ベストアンサー率60% (310/514)
>こちらのやり方のほうがメリットがある いやぁ、余計なこと書いちゃいましたかね~。 多分どっちでもいいんでしょうけどね。 (だったら言うな!(笑)) 私自身が、その他の処理でも[削除]→[リネーム]のやり方を良く使うのと、ちょっと参考に覗いたいくつかのサイトでの最適化処理でも全てがこっちのやり方だったので・・・ ちなみに本職プログラマーの方が[コピー]→[ワーク削除]としている例もありました。 厳密言えば [削除]→[リネーム] の方が処理が早そうな気もしますが・・・。
お礼
こんにちは。何回も回答してくださって、ありがとうございます。今回は、あまり工数をかけられないので、今のままで良しとします。どうもありがとうございました。
- vantage
- ベストアンサー率60% (310/514)
「最適化」というのが、VBAから CompactDatabase を実行ということでしたら、これはメニューの「最適化」とは別の動作です。 メニューの「最適化」→ データベースとオブジェクトを最適化 CompactDatabase → データベースだけを最適化 当然、結果としてのファイルサイズも異なることになります。
お礼
こんにちは。早速の回答ありがとうございます。CompactDatabaseがデータベースのみ最適化するなんて知りませんでした。あつかましいですが、メニューの最適化同様、データベースとオブジェクトを最適化するコマンドをご存知でしたら教えていただけないでしょうか?(オブジェクトのみでも、CompactDatabaseとあわせてやれば問題ないですよね?)
お礼
こんにちは。わざわざ以前の質問を見てくださったのですね。ありがとうございます。 書き方が悪くて失礼しました。私の質問の中であげているa.mdbというのは、テーブルのみが入っているdbのことで、プログラムを格納しているdbを肥大化させたということではありません。オブジェクトを最適化するコマンドはないのですね。わかりました。 それと、最適化の手順を書いていただきましたが、こちらのやり方のほうがメリットがあるのでしょうか?(データベースが壊れにくい、とか)質問攻めですみません。