2011-12-05 18 views
2

レポートをビルドして実行するときに、MS Accessがオープンデータベースオブジェクトをどのように処理しているかを調べようとしています。MS Accessはオブジェクトを開いたままにしますか?

各レポートには数十のクエリがあり、データベースが正規化されているため、各クエリで多数の異なるテーブルが検索されています。しかし、私はいつも私が非常に多くのデータベースオブジェクトをオープンしているという点に到達しているようですが、アクセスではそれ以上のクエリをレポートに含めることはできません。レポートがどのように生成されているかについての私の考えはおそらく素朴ですが、Accessはクエリを実行し、レポートにデータを配置し、クエリと関連するすべてのオブジェクトを閉じて繰り返します。しかし、これはそうではないようです。

私が気にする唯一の理由は、自分のレポートをスピードアップしようとしているからです。私はあなたのテーブルを構築してクエリを簡単にするべきではないと読んだのですが、レポートを実行しようとするたびに7または8分の時間がかかることを避けるため、テーブルを再構築しました。クエリーでデータを生成する際に使用するオブジェクトが少なくて済みます。テーブルはまだある程度まで正規化されていますが、唯一の欠点は、技術的にテーブルに計算を格納していることです。たとえば、私は顧客基盤の現在の年齢を報告しなければなりません。単純なswitch文(誕生日を保持する別のテーブルを照会する必要があります)でグループ化するのではなく、年齢の範囲、23-27など)を直接テーブルに表示します。

とにかく、アクセスがデータベースオブジェクトをどのように閉じているかについて誰かが私に啓蒙できれば、おそらく私のレポートがなぜそんなに遅いのかを突き止めることができます。

おかげ

+1

アクセスでさらにレポートにクエリを含めることができないと言うときは、レポート自体のRecordSourceを参照していますか?平均して、特定のレポートにバインドするクエリの数はいくつですか? –

+0

Google「JETSHOWPLAN」 Jet/ACEが生成している疑似クエリの計画を見て、あなたのために物事を神秘的にするのを助けるかもしれません。特に、索引付けが必要なフィールドを特定する際に役立ちます。 – mwolfe02

+0

レコードソース自体ではなく、サブレポートを使用します。サブレポートには約80件のクエリが使用されます(サブクエリをカウントすると約110件) – jerry

答えて

0

はあなたが本当に(正しい)正規化された表があり、テーブルは減らすことは本当に不可能であり、あなたが本当にあなたのメインレポートにすべてのそれらのサブレポートを追加する必要があり、あなたが設定して一時テーブルを作成する必要があることを仮定するとあなたのレポートのデータソースとして。ちょっと退屈ですが、クエリが実行されるステップを作成して1つ以上のテンポラリテーブルを生成することができます。これらのテーブルが、レポートでフィルタリングされたデータで作成されている場合は、以前よりもはるかに迅速にレポートを開く必要があります。レポートの展覧会/印刷後に、バッファなどの特定のデータが必要になるまで、テンポラリテーブルを削除するか、または一時停止する必要があります。

それ以外の場合は、可能であればDBのインテリアデザインを検討することをお勧めします。

関連する問題