
Access2003を使用しています。
メンテナンス後保存をしたり、検索をかけたときとても時間がかかるので、データベースからテーブルだけを切り離す方法を試みてみようかと考えています。
テーブルとそれ以外のデータベースオブジェクトを分割する方法です。
試しにコピーをとったファイルで行ってみましたがあまり速度が速まったように感じません。
参考書を読むと、「大量のデータを蓄積するデータベースに威力を発揮する」と書いてあり、見本は300Mバイトになっています。
私がメンテナンスをかけているファイルは65MB程度です。
これぐらいの大きさだと分割する効力は低いのでしょうか?
他の方法を試みたほうがいいのでしょうか?
ちなみにCPUはあまり高くありません。
どなたかこの方面にお詳しい方がいらっしゃいましたらご教示ください。
よろしくお願いいたします。

No.8ベストアンサー
- 回答日時:
>MDBファイルを全部上書きすることになっているために時間がかかっているのかもしれません。
「なっているため」という言葉遣いは正しくなかったかもしれません。
「なるのかもしれないので」位の意味でした。 申し訳ありません。
No6の回答は憶測で書いています。(何の根拠もありません。)
コンピュータやプログラミングの専門家でもありませんし、
私のアクセスの経験もかわいいものですので、(97から)
「こう考える素人がいる」というくらいにとってください。
ちょっと考えてみましたが、mdbのデータファイルの構造は以下のようになっているそうで、
http://www.mrdb.ne.jp/technic/se_guide/d_fkouzo. …
最適化を行うと
・データ部分のブロックが減る
・インデックスによる順番付けがなされる
ので検索に対するパフォーマンスがあがるということには異論はないと思います。
問題はフォームやレポートをいかに保存しているかですが、
やはり決まった単位のブロックを用意して、オブジェクトを書き連ねているのかなと思います。
(前言を撤回することになりますが)そうだとすると、データ部分を切り離すことと
フォームのサイズを小さくすることは関連性がないということになり、
フォームをセーブするときの時間も、データを切り離したところでフォームを最適化しないと、
あまり変わらないということにもなりそうです。
データ部分のみが最適化されたmdbと、すべてのオブジェクトが
最適化されたものの保存時間を比べてみればヒントはつかめそうですが、、、
そのような実験にあまり意義を感じません。(そこまでアクセスを愛していません。)
いろんなDBがありますが利用する際は定期的に最適化を行わないといけないのではないかと思います。
アクセスも例外ではないということです。
>テーブルは必ず別mdbにして、「閉じるときに最適化」していますので
これを行っていれば、保存に関してこれ以上の効率化は難しいと思います。(コーディングを変えない限り)
逆にこの状況で何らかの問題があるなら、
・データ構造は適正か?
・データにどうアクセスするか?
・コードをどう記述するか?
・ハードウエア(通信環境含む)は適正か?
これと共に、
・DBは適正か?
を診断しなくてはいけないと思います。
質問者さんに対してのアドバイスは、
・実運用中のものを開発する際は、別ファイル(コピー)を作りそちらに手を加える。(実データで開発を行うことは望ましくないと思う。)
・手を加えたものをリリースする前に最適化をする。
・実運用中のものには定期的(期間はdbの更新頻度やつくりにもよる)に最適化を行う。
・データに関しては、何らかの形で定期的にバックアップをとる。
以上のような行為が必要で、
それを怠ると、いつかきっと痛い目にあう(かもしれません。)
データとその他の部分を切り離すと、
・データファイルが破損する可能性が低くなる。
・上記のようなメンテナンスが行いやすくなる。
・他のdbへの移行がやりやすくなる。
というメリットがあります。
No.7
- 回答日時:
No.5です。
この場をお借りして、No.6さんにお尋ねします。
----------
>>フォームのデザインを変えた時に保存をかけると30秒....
>MDBファイルを全部上書きすることになっているために時間がかかっているのかもしれません。
----------
とすれば、データが増えると、チョッとした修正であれば、保存の方が時間が掛かることになりますねェ‥‥
私は、テーブルは必ず別mdbにして、「閉じるときに最適化」していますので、そういう経験はない‥‥と言うことになりますかぁ~

No.6
- 回答日時:
No1です。
データを分割させることについての必要性については、皆様がおっしゃっておられるとおりです。(必須です)
>フォームのデザインを変えた時に保存をかけると30秒....
(実験していないので、ただの憶測ですが)MDBファイル自体が小さくなるので、データを分割すると早くなる可能性はあります。
MDBファイルを全部上書きすることになっているために時間がかかっているのかもしれません。
>新規レコードを追加したときはそれほどでもありません。
これまた憶測ですが、追加の際にはファイルの末尾にデータを加えている(appendしている)だけなので速いのかもしれません。
No.5
- 回答日時:
No.2のogohnohitoです。
No.4さんはAccess1.aから使っていたのですね。私はその頃「桐」を使っていたはずです。桐の「大遅刻」でAccess2.0に移行しましたぁ~
質問者さんは、
> 分割させる方法は意味がないようなのでやめることにしました
と言っておられますが、決してそんなことはありません。むしろ「分割すべき」です。
私は「中間テーブル」を使う方(たぶん)なので、データテーブルと中間テーブルは必ずmdbを分けています。結果として3っのmdbで一つのシステムになります。その目的は、No.4さんの云う「保守性、拡張性」です。
息の長いシステムにするには「分割すべき」です。
No.4
- 回答日時:
Accessで、アプリケーション・システムを構築する場合は分割するのが当然と考えます。
Access1.a~Access2000頃まで10年近く、Accessでシステムを構築してきましたが、
分割してある方が、保守性、拡張性が高いと言えます。非分割型に比べると、
最初にテーブルを開く時に遅いことが欠点ですが、2回目以降はファイルが
開いているので、処理速度の劣化はありません。但し、非分割型より速いかと言うと、
目覚しい向上は期待できません。
尚、DBを最適化すると、処理速度が向上しますが、分割している場合はVBAで処理可能です。
http://www.geocities.jp/cbc_vbnet/kisuhen/mesodo …
No.3
- 回答日時:
その本で書かれているのが、「速度が速くなる」目的なのか判断しかねますが、単純に分けたからといって早くなることは無いと思います。
が、ネットワーク環境でファイル共有にしている場合は、分けることによってネットワーク トラフィックを少なくできるので その意味では早くなります。
複数ユーザーで利用する場合には、データのMDBだけを共有するのが(リンクテーブル)いいですね。
あとは、1ファイルで処理しているより ファイルが壊れた時のトラブルを回避できる点や、開発中でも完全に分離していると テンスと環境等も作成しやすい面があります。
No.2
- 回答日時:
No.1さんの言うとおりで、「テーブルの最適化」と「適正なインデックス」に懸かっていると思います。
更に、テーブル以外のmdbを(閉じる時に)最適化したりmde化すると、体感はありませんが速くなる方向にあります。

No.1
- 回答日時:
専門家ではないので、はずしているかもしれませんが、
>テーブルとそれ以外のデータベースオブジェクトを分割する方法
これによって、パフォーマンスが大きく変わるとは思えません。
(大きなアクセスファイルを使う上では必須の行為だと思いますが)
検索の速度はどのようなテーブル(フィールド数、レコード数)から、
どういう形で(どのフィールドに対して、どういう形の)検索を行っているのかによります。
抽出の速度を上げるためには(1)テーブルの最適化と(2)適正なインデックスの作成がメインだと思います。
それを行ったうえでのパフォーマンスに不満があるなら、
検索方法の見直し、テーブル構造の見直しやDBMSの変更を視野に入れるべきだと思います。
保存に時間がかかるというのは、意味がはっきりとわからないのですが、
何らかの形でバックアップなどを取るときに遅いということでしょうか?
それとも、レコードを挿入するのに時間がかかるということでしょうか?
レコード挿入についてでしたら、これまたどのような形でレコードを挿入されているかにかかってきます。
この回答への補足
補足ですが、保存に時間がかかるというのは、フォームのデザインを変えた時に保存をかけると30秒ほどかかります。
新規レコードを追加したときはそれほどでもありません。意外と早いです。
これはどうしてなのでしょうか?
よろしかったら教えていただけないでしょうか。
なお、分割させる方法は意味がないようなのでやめることにしました。
教えていただいたテーブルの最適化と適正なインデックスの作成を見直してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- その他(データベース) Notion@リレーション値の取得について 1 2023/06/28 10:27
- 発達障害・ダウン症・自閉症 中学の時にIQ82の境界知能と診断されました。 今の私も、やはり境界知能でしょうか? そしてこれは、 3 2023/02/19 00:37
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- JavaScript Typescript が必要な理由 1 2023/01/07 11:45
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
もし10億円当たったら何に使いますか?
みなさんの10億円プランが知りたいです!
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
Accessで検索を高速化
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
Access終了時の最適化が失敗?
その他(データベース)
-
-
4
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
データベースの最適化をマクロでしたい
その他(データベース)
-
8
accessの処理が遅い
その他(データベース)
-
9
MS-Accessのエクスポートで異常に時間がかかるようになった
その他(データベース)
-
10
Access クエリ実行が急に非常に遅くなりました。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでSQLServerへのODBC接続
-
SQLです教えてくださいお願いし...
-
Oracleで上書きImportはできま...
-
住所のDBテーブル、マスターの...
-
Accessのテーブルデータを一気...
-
同一テーブルのデータを参照し...
-
男性と2人で飲食店に行きテーブ...
-
L2SWはARPテーブルを持っている?
-
会社の飲み会の幹事になり、座...
-
面接のときテーブルが正面に。...
-
phpMyAdminでMySQL4.1のレコー...
-
「テーブルに座って……」という...
-
【エクセル】データテーブルの...
-
テーブル名をカラムとして取得...
-
お金持ちのテーブル
-
SQLにて指定日付より前、かつ最...
-
SQLのサブクエリについて
-
UTF8のテーブルをODBCドライバ...
-
Excel テーブル内の空白行の削除
-
オーダーの覚え方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
ビューのソートについて
-
テーブルで一番古いレコードだ...
-
Oracleで上書きImportはできま...
-
アクセス レコードセットを更...
-
このISAMでは、リンクテーブル・・
-
住所のDBテーブル、マスターの...
-
結合テーブルでINSERTする方法...
-
同一テーブルのデータを参照し...
-
マテリアライズドビューとスナ...
-
htmlコードで書かれた表にphpで...
-
accessでレコード更新直後の反...
-
IF NOT EXISTを使用するINSERT文
-
Access VBAからエクセルに出力...
-
ORA-01401が表示され、データが...
-
構文エラー : 演算子がありませ...
-
ERROR1062:Duplicate entry.......
-
ODBC接続で新しいレコードを追...
-
「クリップボードにコピーされ...
おすすめ情報