0

アクセスデータベースにインポートした、100万を超える行と多数の列(300)を含む巨大なExcelファイルがあります。比較的小さなデータセットの数値フィールドに一致する内部結合クエリを実行しようとしています。可能であれば、巨大なデータセットからデータのすべての列をキャプチャしたいと思います。巨大なデータセットから1つの列だけを選択した場合、クエリを約30分で実行することができました。ただし、より大きなデータセットからすべての列を選択し、クエリをテーブルに書き込むと、停止することはありません。

1つの考慮事項は、小さいデータセットの結合フィールドは数値であり、大きいデータセットの結合フィールドはテキストであるということです。これを回避するために、「val」関数を使用してテキストフィールドを数値に変換するより大きなデータセットでクエリを作成しました。問題のテキストフィールドにはインデックスが付けられていますが、小さいデータセットのタイプに一致するように、テーブル自体を数値フィールドに変換する必要があると考えています。多分それはルックアップをより効率的にするでしょう。

それ以外に、このクエリを妥当な時間で実行するための優れた戦略のいくつかの提案を使用でき、非常にありがたいです。

4

1 に答える 1

1

Accessはリレーショナルデータベースです。構造がリレーショナルモデルを尊重する場合、効率的に機能するように設計されています。ボリュームは問題ではありません。

ステップ1:データを正規化します。それが何を意味するのかわからない場合は、Accessにウィザードがあり、これを支援したり(データベースツール、テーブルの分析)、データベースの正規化
を検索したりできます 。ステップ2:結合フィールドにインデックスを付ける
ステップ3:すばやく楽しむ結果

結合の両側を同じタイプにするというあなたの考えは必須です。そうしないと、インデックスと最適化が機能しなくなります。

于 2012-08-15T19:34:12.893 に答える