![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Access 2000で作成したmdbファイルを
Access 2013環境で使用しています。
・テーブルのみのmdbファイル(1)があります。
mdbファイル(1)の中には、テーブルオブジェクトが1つあり、フィールドが1つ、
フィールドサイズは255です。レコード件数は、36万5000件程度あります。
・フォームやクエリ、マクロ、mdbファイル(1)と
リンクテーブルでつないでいるmdbファイル(2)があります。
mdbファイル(1)のファイルサイズが、90MBに達しており
mdbファイル(2)を開いたり、何か処理させるのを遅くしているのではないか
と思っています。
他の方の質問をチェックしましたが、結果は
最適化について
オプション→現在のデータベース→閉じるときに最適化する→チェックON済み
手動で最適化する→変化なし。
MDBをMDEに変換する
Access 2013では、バージョンが違うので変換できないようです。
accdb形式に変換→accde形式に変換しましたが、変化なし
(そもそも、ファイル(1)はテーブルのみで、マクロやプロシージャは無いので、
意味が無かったかも)
となっており、対処法が見つからなくて困っています。
何か良い案はないでしょうか。
No.1ベストアンサー
- 回答日時:
255〔B〕×37万=94〔MB〕
なので、実際に使っているデータ量が94MBありますので、圧縮はできません。
ここから、データの削除、挿入を繰り返すと、ブランクデータが増えて、
ファイルサイズはさらに増加します。ブランクデータは最適化によってなくす
ことはできますが、それでも94MBに戻るだけです。
工夫としては、リンクデータのキーの見直し、(1)のMDBにはキーだけを持ち、
データは(2)のMDBに移行するなどの方法があります。
根本的な解決としては、Oracle、SQLServerなどのデータベース
ソフトを使うことです。
No.2
- 回答日時:
フィールドのインデックスの設定でも結構変わってきます。
ファイル名、idx.accdb
テーブル名、T1
フィールド名、F1、テキスト型でフィールドサイズ255
(インデックスに、はい(重複あり)を設定
フィールド名、F2、長整数型。
標準モジュールにて
Sub b()
Dim db As Database
Dim rs As DAO.Recordset
Dim i As Long
Set db = CurrentDb
db.Execute ("delete * from T1")
Set rs = db.OpenRecordset("T1", dbOpenDynaset)
For i = 1 To 370000
rs.AddNew
rs!f2 = i
If i Mod 1000 = 0 Then
rs!f1 = "abc"
Else
rs!f1 = rndStr
End If
rs.Update
Next
End Sub
Private Function rndStr() As String
Dim i As Integer
For i = 1 To 255
rndStr = rndStr & Chr(Int(Rnd * 26) + 65)
Next
End Function
で、b を実行しダミーデータを入れときます。(最適化も実行しといてね)
このファイルを別名保存して、NOidx.accdb
フィールド名、F1、テキスト型でフィールドサイズ255
(インデックスに、なし)に設定を変更します。
(テーブル名は、NoT1 とか適当に)。(最適化も実行)
二つのファイルをファイルサーバーに移動します。
もう一個検証用のファイルを作成し上記ファイルから
上記テーブルのリンクテーブルを二個作成します。
クエリを上記テーブルから二個作成
抽出条件に、Like "abc*"
としてみます。
クエリの左下にあるレコード数が表示されるまで
インデックス有りの場合は1~2秒
無しの場合は8秒弱でした。
(当方のはしょぼいファイルサーバーなので時間が掛かります。。。)
※初回のクエリに限ります。
一旦ファイルを閉じないとキャッシュから読みだされるようなので
連続して行う場合は時間は同じになります。
以上、
リンクテーブルでもインデックスは有効かのテストでした。
#1さんの回答の通りファイルサイズはどうしようもないと思います。
インデックスを作成していたなら、お邪魔虫回答ですね。(^_^;)
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Access】フォームで自動計算...
-
Accessでテーブルの値をテキス...
-
Accessのフィールド数が255しか...
-
ODBC--リンクテーブル'XXXX'で...
-
ACCESSでの改行コード
-
アクセス VBAで列の入れ替...
-
ACCESSでオートナンバーを任意...
-
Accessの最大レコード数制限
-
ACCESSでテーブルのチェックを...
-
アクセス メモ型 255文字...
-
Access 昇順・降順で並び替え...
-
ファイルメーカーでCountifの様...
-
ExcelのデータをコピーでACCESS...
-
INSERT INTO ステートメントに...
-
フィールド数の多すぎる・フィ...
-
Access:リンクテーブルマネー...
-
Accessで、固定アルファベット+...
-
ACCESSで400以上のフィールドが...
-
SQLで特定の文字を含むものを削除
-
accessで重複を防ぎたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフィールド数が255しか...
-
Accessでテーブルの値をテキス...
-
INSERT INTO ステートメントに...
-
ACCESSでの改行コード
-
ACCESSで400以上のフィールドが...
-
accessで重複を防ぎたい
-
アクセス エラーを数値「0」に...
-
Access 昇順・降順で並び替え...
-
accessのレポートで元になるテ...
-
ExcelのデータをコピーでACCESS...
-
アクセス VBAで列の入れ替...
-
SQLServer2005のSQL文での別名...
-
【Access】フォームで自動計算...
-
Accessで、固定アルファベット+...
-
主キーはオートナンバー型のID...
-
ファイルメーカーでCountifの様...
-
アクセス メモ型 255文字...
-
ACCESSで和暦を西暦に・・・
-
ACCESS 入力文字数制限
-
ACCESSでテーブルのチェックを...
おすすめ情報