私はから選択しています(複雑なものは何もありません)
Select * from VIEW
このビューには、約 6000 のレコードと約 40 の列があります。これは、Lotus Notes SQL データベースから取得されます。つまり、私の ODBC ドライブは LotusNotesSQL ドライバーです。クエリの実行には約 30 秒かかります。私が働いていた会社では、EXCELを使用してクエリを実行し、すべてをワークシートに書き込んでいました。すべてをセルごとに書き込むと想定しているため、完了するまでに最大 30 ~ 40 分かかりました。
次に、MS アクセスを使用しました。データを格納するために、Access でレプリカ ローカル テーブルを作成しました。私の最初の試みは
INSERT INTO COLUMNS OF LOCAL TABLE
FROM (SELECT * FROM VIEW)
これは疑似コードであることに注意してください。これは正常に実行されましたが、ここでも 20 ~ 30 分かかりました。次に、VBA を使用してデータをループし、個別のレコードごとに (INSERT ステートメントを使用して) 手動で挿入しました。これには約 10 ~ 15 分かかりました。これは私の最高のケースです。
後で行う必要があること: データを取得したら、部門別にフィルター処理する必要があります。問題は、SQLクエリにwhere句を入れた場合です(クエリの実行に30秒から約10分+ローカルテーブル/ Excelへの書き込み時間にジャンプします)。どうしてか分かりません。列がすべてテキスト列であるためでしょうか?
一部の列を整数に変更すると、where 句の点で高速になりますか?
これにアプローチする方法についての提案を探しています。私の上司は、Java ベースのソリューションを採用できると言っていました。これは役に立ちますか?私は Java の人ではなく ac# であり、おそらく c# を使用するように説得することもできますが、主に時間を短縮する方法についての提案を探しています。すでに 40 分から 10 分に短縮されていますが、2 分未満が必要です。
要約すると:
クエリの実行には約 30 秒かかります
Excel/Access でローカルにクエリを使用するには、約 15 ~ 40 分かかります
2分以内に必要
Javaベースのソリューションを使用できます
Java の代わりに他のソリューションを提案することもできます。