2016-08-14 9 views
1

My Access 2016 dbにはいくつかのCSVファイルへのリンクがあり、その中にはかなり大きなもの(> 120MB)があります。これらのCSVファイルで複雑なクエリを実行すると、速度が遅すぎて実用的ではありません。これらのリンクされたCSVファイルのローカルテーブルを作成することはできません。クエリを実行するたびに、これらのCSVファイルが更新されたデータで更新されるからです。MS-Access:リンクされたCSVファイルのクエリが遅い

大幅にスピードを上げるにはどうすればよいですか?

+0

@ThunderFrameが以下で説明するように、クエリにCSVファイルを使用しないでください。 CSVは通常、システム間でのデータの移行/移植やアーカイブに使用されるテキストファイルであり、アプリケーションでは使用しないでください。 – Parfait

答えて

2

ローカルの一時/ステージングテーブルにCSVデータをインポートすることをお勧めします。テンポラリ・テーブルに対してクエリを実行することができます。クエリがジョインを使用する必要がある場合、または非常に複雑な場合は、必要に応じてテンポラリ・テーブルのインデックスを使用することを検討できます。

データのクエリが終了したら、一時テーブルを切り捨てたり削除したりすることができます。

+0

私はこのトリックを知っていましたが、問題はデータベースファイルのサイズが非常に速く2GBになり、dbの自動圧縮が容易でないことです – Kashif

+0

一時テーブルが同じデータベースにある必要はありません。すべてのスピードは得られませんが、リンクされたAccessテーブルはリンクされたCSVファイルよりも高速です。 – ThunderFrame

+0

私はテンポラリテーブル用の新しいデータベースを作成する場合でも。私はそれらを上書きし続けると、その新しいdbサイズの風船は定期的に圧縮される必要があり、そうでなければ2GBで動作しなくなります。 – Kashif

1

別のオプションは、負荷輸入とまったく同じではありません)CSVファイルMySQLのにすることです:

Import CSV File Into MySQL Table

これは非常に高速プロセスである - に近いです単純なファイルコピー。

次に、ODBC経由でMySQLインスタンスに接続するには、MyODBCを使用します。

+1

MySQLはいつ会話に入ったのですか? – dbmitch

+1

要件/制約が与えられれば、これは良いアプローチのようです。 – Andre

関連する問題