さまざまなパラメーターを使用して SQL データベースに繰り返しクエリを実行する既存のコードがいくつかあります。最初にデータの大きなチャンクを ADODB.Recordset に選択するように変更し、ループ クエリ内でこれを変更すると、パフォーマンスが向上する可能性が高いと考えました。データベース自体ではなく、レコードセット。
もう 1 つの注意点は、これらのサブクエリを実行するときに集計関数 (SUM、MIN、MAX、AVG) を使用する必要があることです。
これをコーディングするのはさほど難しいことではありませんが、これほど明らかなことは以前に何千回も行われているように思えます。この種の機能を含む何らかのオープン ソース ライブラリが存在するのではないかと思います。数年前に遭遇したことを誓いますが、Googleで追跡することはできません.
編集:
コメントの良い提案 (TimW による) は、データベース サーバーですべての集計を行い、クライアントに戻してから、クライアントでフィルタリングを行うことでした。(ただし、この場合は機能しません。フィルターが適用されている列のうち 2 つが DateTime 列であるため)
アップデート
以前に遭遇したライブラリは次のとおりです:
http://code.google.com/p/ado-dataset-tools/
作者がそれを放棄したかどうかは定かではありません (彼の計画は、それを更新して c# に変換することだったようです)。しかし、さまざまなライブラリの VBA バージョンは、 http ://code.google.com/p で入手できるようです。
/ado-dataset-tools/source/browse/trunk/ado-recordset-unit-tests.xls?spec=svn8&r=8#ado-recordset-unit-tests.xls
私が興味を持った特定の ADO ライブラリはここにあります:
http://code.google.com/p/ado-dataset-tools/source/browse/trunk/ado-recordset-unit-tests.xls/SharedRecordSet.bas
特にGroupRecordSet()関数を参照してください。
SUM、MIN、MAX 集計関数のみがサポートされているようです。
別の可能な代替手段 (Excel 内で実行している場合)
Excel VBA
で仮想テーブルに対する SQL クエリを書くExcel でワークシートを作成し、その後のクエリでそのワークシートをデータソースとして使用することが実行可能なオプションになる場合があります。