Microsoft Accessの最適化

記事
IT・テクノロジー
 ちょっとMicrosoft Accessについて相談を受けまして、チューニングにより性能向上ができないか調べてみました。
 方々の英文サイトを調べて回って、検証レポートとしてまとめました。目次だけですが、その内容を掲載します。

……………………………………………………………………

目次
1. 出典元 7
2. 背景 7
3. 目的 7
4. 概要 7
5. TIPS 7
    5.1 テーブルパフォーマンスのヒント 7
        [1] テーブルを正規化すること 7
        [2] すべてのテーブルに主キーを設定すること 7
        [3] 主キーは1つのフィールドで、数値型とすること 8
        [4] テーブル結合は、リレーションシップで行うこと 8
        [5] 不要なサブデータシートを削除すること 8
        [6] 最適なデータ型を選択すること 8
        [7] 必要に応じてセカンダリインデックスを追加すること 8
        [8] 過剰なインデックスを作らないこと 8
        [9] 同じデータがたくさんあるフィールドのインデックスを作らないこと 8
        [10] インデックスをできるだけ小さくすること 9
    5.2 リンクされたデータベースとリンクされたテーブル 9
        [1] 全てのリンクされたデータベースへのオープンハンドルを維持する 9
        [2] レコードナビゲーションを最小化する 9
        [3] データエントリーモードを使用する 9
        [4] データ入力フォームを作成する 9
        [5] クエリから返されるデータを制限する ★ 9
        [6] ドメインの集計関数を使用しない 9
        [7] ロックの即時解除 10
    5.3 SQL ServerとODBCのパフォーマンスに関するヒント 10
        [1] ODBCテーブルのリンク 10
        [2] サーバーのトラフィックを最小化する ★ 10
        [3] 適切な場合はスナップショットを使用 10
        [4] 大規模なレコードセットにはDynasetを使用する 10
        [5] キャッシュを活用する 10
        [6] ローカルでのクエリ処理を強制しない 10
        [7] 一括更新にFailOnErrorを使用する 11
        [8] ODBCDirectの使用 11
    5.4 データベース・パフォーマンスのヒント 11
        [1] データベースを2つに分割する 11
        [2] 現在のワークグループ情報ファイルを使用する 11
        [3] Accessパフォーマンスアナライザーを使用する 11
        [4] Microsoft Access テーブルアナライザーを実行する 11
        [5] 2007以降のデータベースでグラフィックのサイズを小さくする 11
        [6] データベースの圧縮を頻繁に行い、スペースを確保する 12
        [7] 高速に見えるようにする 12
    5.5 クエリパフォーマンスのヒント 12
        [1] 統計情報を更新するために頻繁にコンパクトにする 12
        [2] クエリ条件フィールドとジョインフィールドのインデックス化 ★ 12
        [3] 結合フィールドで同一または互換性のあるデータ型を使用する 12
        [4] クエリから返されるフィールドの制限 ★ 13
        [5] 計算フィールドとIIF関数を避ける 13
        [6] 非インデックスフィールドで条件指定をしない ★ 13
        [7] ソートフィールドのインデックス化 13
        [8] 同じクエリを何度も実行しないためにテンポラリテーブルを使用する 13
        [9] 外部テーブルでのドメイン集計関数を避ける 13
        [10] クロスタブのクエリで固定カラムの見出しを使用する 13
        [11] >=と<=の代わりにBETWEENを使用する 13
        [12] レコード数を数えるにはCOUNT(*)を使う 13
        [13] アプリケーションを配信する前に、各クエリをコンパイルする 13
        [14] Rushmore クエリ最適化の利用 14
        [15] 可能な限りプライマリーキーインデックスにリンクする 14
        [16] 一対多の制限を実験する 14
        [17] 必要であれば正規化しない 14
        [18] Joinの代わりにSub Queryを使用した実験 14
        [19] 各クエリで返されるフィールドの数を制限する 14
    5.6 フォームのパフォーマンスのヒント 15
        [1] フォームのRecordSourceのSQLをクエリとして保存する 15
        [2] 未使用のフォームを閉じる 15
        [3] フォームを非表示にして開く 15
        [4] フォームのDataEntryプロパティを使用する 15
        [5] フォームのレコードセットをソートしない 15
        [6] クエリに基づくフォームを作成/返されるフィールドを最小限にする 15
        [7] 軽量フォームを使用する 15
        [8] フォームにリンクさせるためのフィールドをインデックス化する 15
        [9] サブフォームに編集プロパティを設定する 15
        [10] リストボックス/コンボボックスに含まれるフィールドの数を減らす 15
        [11] コンボボックスの自動拡張を無効に設定する 15
        [12] 自動展開されるコンボボックスの先頭フィールドをテキストへ 15
        [13] バインドされたコンボボックスの最適化 15
        [14] コンボ/リストボックスのリンクデータをローカルに移動する 15
        [15] 複数ページでのコントロールのグループ化 15
        [16] タブページでページが選択されたときだけサブフォームを読み込む 15
        [17] 結合されていないOLEオブジェクトが含まれるフォームを閉じる 15
        [18] サブフォームをリスト/コンボボックスコントロールに変換する 15
        [19] フォームモジュールのコードを標準モジュールに移動する 15
        [20] 不要なプロパティの割り当てを避ける 15
        [21] Requeryアクションの代わりにRequeryメソッドを使用する 16
        [22] ビジュアルフィードバックを行う 16
        [23] ハイパーリンクを使用してフォームを軽量化する 16
        [24] フォームを複数のページに分割する 16
        [25] コントロールの数を最小限に抑える 16
        [26] コントロールの重なりを避ける 16
        [27] グラフィックの使用は控えめに 16
        [28] イメージコントロールの使用 16
    5.7 レポートパフォーマンスのヒント 17
        [1] レポートRecordSourceのSQLをクエリとして保存する 17
        [2] レポートクエリをソートしない 17
        [3] ソートとグループ化における式と関数の使用を避ける 17
        [4] ソートとグループ化で使用するフィールドのインデックス化 17
        [5] クエリに基づくレポート-返されるフィールドの最小化 17
        [6] サブレポートのリンクに使用されるインデックスフィールド 17
        [7] 基準に使用されるインデックスサブレポートフィールド 17
        [8] レポートのレコードソースでドメイン集計関数を避ける 17
        [9] NoDataイベントの使用 17
        [10] 不必要なプロパティ割り当てを避ける 17
        [11] 不要なレポートの削除 17
        [12] レポート上のコントロールの数を制限する 17
        [13] コントロールの重なりを避ける 17
        [14] ビットマップの使用を最小限に抑える 17
        [15] イメージコントロールの使用 17
    5.8 マクロのヒント 17
        [1] マクロをVisual Basicのコードに変換する 17
    5.9 モジュール/VBAのパフォーマンスに関するヒント 18
        [1] MDEファイルの作成 18
        [2] コンパイルされた状態を実現する 18
        [3] デコンパイルを回避する方法 18
        [4] デコンパイルで古いVBAのコンパイル状態をなくす 18
        [5] ActiveXコントロールは参照を持つべき 18
        [6] 明示的なオプションの使用 18
        [7] 最も効率的な変数型を選択する 18
        [8] 早期バインディングの使用 18
        [9] オブジェクト変数に何かを割り当てる 18
        [10] Meキーワードの使用 18
        [11] 部品が他のコードを実行する場合、即時If関数を避ける 18
        [12] 動的な配列を使用する 18
        [13] デマンドローディングを利用する 18
        [14] デッドコードをなくす 18
        [15] 変数の代わりに定数を使う 18
        [16] 無限の再帰を避ける 18
        [17] 文字列データをスマートに宣言する 18
        [18] OLEリファレンスを最小化する 18
        [19] 画面描画をオフにする 18
        [20] クエリの方が良い場合はコードを書かない 18
        [21] データベースは1日に2回以上閉じよう 19
        [22] ActiveXコントロールは参照を持つべき 19
        [23] ループの境界を決定するために式を使用しない 19
    5.10 データアクセスオブジェクト(DAO)プログラミングのヒント 20
        [1] 「Find」ではなく「Seek」を使う 20
        [2] レコードのナビゲーションにブックマークを使う 20
        [3] FindRecordとFindNextにインデックス付きフィールドを使用する 20
        [4] 必要なとき以外はトランザクションを使用しない 20
    5.11 ジェットエンジンチューニングのヒント 21
        [1] SHOWPLANを使用してクエリの実行計画を確認する 21
        [2] Jetレジストリ設定によるデータベース性能の調整 21
        [3] スレッド 21
        [4] MaxBufferSize 21
        [5] ユーザコミットシンク 21
        [6] 暗黙のコミット同期(ImplicitCommitSync 21
        [7] フラッシュトランザクションタイムアウト 21
        [8] ExclusiveAsyncDelay(排他的非同期遅延 21
        [9] 共有非同期遅延(SharedAsyncDelay 21
        [10] ページタイムアウト 21
        [11] ロックディレイ 21
        [12] MaxLocksPerFile 21
        [13] RecycleLVs 21
        [14] ISAMStats を使用してエンジンの詳細を確認する 21
    5.12 スタートアップのヒント 22
        [1] スタートアップフォームのコードを削除する 22
        [2] 起動フォームのコードを最小化する 22
        [3] 起動フォームでActiveXコントロールを使用しない 22
        [4] データベースの最新版を自動で導入する 22
    5.13 マルチユーザーパフォーマンスのヒント 22
        [1] データベースを分割する 22
        [2] 静的データをローカルに保持する 22
        [3] ロック競合を回避するためのオプション設定 22
        [4] レジストリでJetをチューニングする 22
    5.14 コンピュータのパフォーマンスに関するヒント 22
        [1] RAMの増加 22
        [2] NTFSの圧縮を避ける 22
        [3] ネットワーク速度を最大にする 22
        [4] ローカルディスクに十分な空き容量を確保する 22
    5.15 Windowsのパフォーマンスに関するヒント 23
        [1] データベースのローカル化 23
        [2] ローカルにアクセスをインストールする 23
        [3] データベースを排他的に開く 23
        [4] 不要なアプリケーションを閉じる 23
        [5] ディスクを最適化する 23
        [6] 時々アクセスを閉じて、漏れたメモリを回収する 23
        [7] Windowsをローカルにインストールする 23

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す