レポートをビルドして実行するときに、MS Accessがオープンデータベースオブジェクトをどのように処理しているかを調べようとしています。MS Accessはオブジェクトを開いたままにしますか?
各レポートには数十のクエリがあり、データベースが正規化されているため、各クエリで多数の異なるテーブルが検索されています。しかし、私はいつも私が非常に多くのデータベースオブジェクトをオープンしているという点に到達しているようですが、アクセスではそれ以上のクエリをレポートに含めることはできません。レポートがどのように生成されているかについての私の考えはおそらく素朴ですが、Accessはクエリを実行し、レポートにデータを配置し、クエリと関連するすべてのオブジェクトを閉じて繰り返します。しかし、これはそうではないようです。
私が気にする唯一の理由は、自分のレポートをスピードアップしようとしているからです。私はあなたのテーブルを構築してクエリを簡単にするべきではないと読んだのですが、レポートを実行しようとするたびに7または8分の時間がかかることを避けるため、テーブルを再構築しました。クエリーでデータを生成する際に使用するオブジェクトが少なくて済みます。テーブルはまだある程度まで正規化されていますが、唯一の欠点は、技術的にテーブルに計算を格納していることです。たとえば、私は顧客基盤の現在の年齢を報告しなければなりません。単純なswitch文(誕生日を保持する別のテーブルを照会する必要があります)でグループ化するのではなく、年齢の範囲、23-27など)を直接テーブルに表示します。
とにかく、アクセスがデータベースオブジェクトをどのように閉じているかについて誰かが私に啓蒙できれば、おそらく私のレポートがなぜそんなに遅いのかを突き止めることができます。
おかげ
アクセスでさらにレポートにクエリを含めることができないと言うときは、レポート自体のRecordSourceを参照していますか?平均して、特定のレポートにバインドするクエリの数はいくつですか? –
Google「JETSHOWPLAN」 Jet/ACEが生成している疑似クエリの計画を見て、あなたのために物事を神秘的にするのを助けるかもしれません。特に、索引付けが必要なフィールドを特定する際に役立ちます。 – mwolfe02
レコードソース自体ではなく、サブレポートを使用します。サブレポートには約80件のクエリが使用されます(サブクエリをカウントすると約110件) – jerry