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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
ACCESSで400以上のフィールドが...
-
Accessのフィールド数が255しか...
-
ACCESSで和暦を西暦に・・・
-
アクセス エラーを数値「0」に...
-
accessで重複を防ぎたい
-
INSERT INTO ステートメントに...
-
【Access】フォームで自動計算...
-
アクセスで複数行の一括入力す...
-
ACCESS2000「定義されているフ...
-
ODBC--リンクテーブル'XXXX'で...
-
アクセスのテーブルデータをCSV...
-
ACCESSで表が作りたく、そのた...
-
ACCESSでテーブルのフィールド...
-
ACCESSでの改行コード
-
ExcelのデータをコピーでACCESS...
-
Accessで、固定アルファベット+...
-
アクセス A列コピー B列貼り...
-
固有レコード識別子の選択とは??
-
Access 昇順・降順で並び替え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブルの値をテキス...
-
アクセス エラーを数値「0」に...
-
ACCESSでの改行コード
-
Accessのフィールド数が255しか...
-
accessのレポートで元になるテ...
-
Accessで、固定アルファベット+...
-
INSERT INTO ステートメントに...
-
Access 昇順・降順で並び替え...
-
ExcelのデータをコピーでACCESS...
-
SQLServer2005のSQL文での別名...
-
ACCESSで400以上のフィールドが...
-
アクセス VBAで列の入れ替...
-
IT用語について質問です。 以前...
-
【Access】フォームで自動計算...
-
accessで重複を防ぎたい
-
ACCESSでテーブルのチェックを...
-
ACCESSで和暦を西暦に・・・
-
アクセス メモ型 255文字...
-
主キーはオートナンバー型のID...
-
ACCESSでオートナンバーを任意...
おすすめ情報