Performance Pivottableansicht in Access 2002

Hallo zusammen,

ich erstelle z.zt. eine Access Applikation bei der Daten einer (Haupt)Abfrage in der Pivottable View dargestellt werden sollen.
Der Nutzer soll die Möglichkeit haben, sich Berichte als Pivotreport selbst zusammenstellen zu können.
Er hat die Möglichkeit aus ca. 30 einzelnen Attributen (Feldern) auszuwählen und diese in Zeilen, Spalten,Filter bzw. im Datenbereich zu positionieren.
Die Abfrage liefert im Moment ca. 14.000 Datensätze, die sich aber bald um das 50-fache erhöhen können.
Nun ist es so, dass schon bei der relativ kleinen Anzahl von Datensätzen Performanceprobleme bei der Erstellung eines Pivotreports
einstellen.
Bereits wenn ich nur 5 Attribute in der Reihe anordne und 2 ins Datenfeld ziehe dauert es ca. 30 sec. bis der Report vollständig angezeigt wird. D.H. wenn sich die Anzahl der Datensätze wie oben erwähnt erhöht, muss ich mit Berechnungszeiten bis zu 25 min rechnen.

Wa ich bereits versucht habe ist, als Datenquelle für die Pivotreports keine Abfrage, sondern eine mit der MakeTable Query erstellten Tabelle, die aus der Abfrage generiert wird zu benutzen. Leider ohne spürbaren Unterschied.

Und nun kommts: Wenn ich in der Pivotansicht, die Daten nach MS Excel exportiere und mir dort den Pivotbericht erstelle, dauert es vernachlässigbar kurz bis ich eine kompletten Pivotreport (mit allen Attributen) erstellt habe.

Nun die Fragen an die Experten:

  1. Wie ist sowas möglich? Wieso ist Excel in dem Fall wesentlich schneller als Access?

  2. Wie ist es möglich, die Performance in Access für o.a. Anwendungsszenario effektiv zu erhöhen (auf Excel Niveau).

  3. Zuätzlich wäre interessant zu wissen wie Access die einer Pivottable View zugrunde liegenden Daten intern abspeichert.

Vielen Dank für Antworten.

Beste Grüsse

Salvo

Hallo Salvo,

Die Abfrage liefert im Moment ca. 14.000 Datensätze,

mal übersetzt: du hast eine Anzahl X? Tabellen. In diesen Tabellen befinden sich X? Datensätze. Per Pivot-Abfrage nutzt du einige der Tabellen die in ?Beziehung stehen? um per ?Bedingung? mit X? Kriterien eine „Auswahl“ zu treffen.

die sich aber bald um das 50-fache erhöhen können.

dann solltest du dir mal langsam überlegen, ob Access das geeinete Mittel ist!

Nun ist es so, dass schon bei der relativ kleinen Anzahl von
Datensätzen Performanceprobleme bei der Erstellung eines
Pivotreports
einstellen.

definiere: relativ kleinen Anzahl -> in eine Zahl

Bereits wenn ich nur 5 Attribute

Attribute sind was anderes und keine Felder!

in der Reihe anordne und 2
ins Datenfeld ziehe dauert es ca. 30 sec. bis der Report
vollständig angezeigt wird.

vollkommen normal -> Access 2002, lahme Platte (ATA), wenig RAM-Speicher und keine Front- / Backend Trennung.

D.H. wenn sich die Anzahl der Datensätze wie oben erwähnt erhöht,
muss ich mit Berechnungszeiten bis zu 25 min rechnen.

?? könntest du mir das mal vorrechnen?
Du hast eine Abfrage mit 7 Felder die untereinander in X? Beziehung(en) stehen, darauf wendest du X? Bedingungen an, die als Pivotergebnis X mögliche Ergebnisse liefert! Wenn du nun die Anzahl der Felder proportional mit den Bedingungen logarithmisch in ein Formel packst, das dann als Basis für die RAMgröße nimmst, dementsprechend eine SATAII Platte nutzt, und die User über ein Backend (Access 2007) auf die Daten eines zentralen Servers mit 1 GB Anbindung zugreifen, kannst du in etwa eine Aussage über die Zeit machen :smile:

Wa ich bereits versucht habe ist, als Datenquelle für die
Pivotreports keine Abfrage, sondern eine mit der MakeTable
Query erstellten Tabelle, die aus der Abfrage generiert wird
zu benutzen. Leider ohne spürbaren Unterschied.

welche Zeit (wofür) hast du gemessen?

Und nun kommts: Wenn ich in der Pivotansicht, die Daten nach
MS Excel exportiere

wie?

und mir dort den Pivotbericht erstelle,
dauert es vernachlässigbar kurz bis ich eine kompletten
Pivotreport (mit allen Attributen) erstellt habe.

logisch

Nun die Fragen an die Experten:

  1. Wie ist sowas möglich? Wieso ist Excel in dem Fall
    wesentlich schneller als Access?

du lieferst Excel die Daten „mundgerecht“. D.h. Excel hat nicht mehr die „Arbeit“ sich die Daten selbst zusammen zu suchen! Das spart Zeit.

Beispiel: Mit Access malst du ein Bild und läßt es dann von Access fotografieren.
In Excel bekommst du das fertige Bild und mußt es nur noch fotografieren.

  1. Wie ist es möglich, die Performance in Access für o.a.
    Anwendungsszenario effektiv zu erhöhen (auf Excel Niveau).

du vergleichst Äpfel mit Birnen! Wie oben beschrieben kannst du die Performance von Access erhöhen. Aber das Bild „malen“ mußt du trotzdem erst mal.

  1. Zuätzlich wäre interessant zu wissen wie Access die einer
    Pivottable View zugrunde liegenden Daten intern abspeichert.

View = Abfrage = SQL

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolfgang,

ich wollte hier eigentlich konkrete Tips für ein bestimmtes Problem.
Ich denke ich habe mein Problem klar genug definiert - allerdings nur für jemanden, der bereits Erfahrungen mit diesem Problem gemacht hat, sich damit auseinandergesetzt und event. eine Lösung gefunden hat.
Ich brauche an dieser Stelle keine generelle Nachhilfe in Access geschweige denn Informatik (übrigens: Attribute SIND Felder).

Um noch kurz auf Deine Kommentar zu meinen Fragen 1-3 zurückzukommen:

Wie ich bereits gesagt habe, habe ich die Access Pivottableview auf eine TABELLE aufgesetzt, d.h. die der Pivotview zugrundeliegende Daten werden nicht über eine Abfrage geliefert (d.h. muss sich nicht mehr durch Joins quälen.)Trotzdem lief es teilweise zäh…

Dieselbe Tabelle habe ich nun (über die Pivotansicht)nach Excel exportiert und festgestellt, dass die Pivotansicht dort wesentlich performanter läuft.

Deshalb kann ich Deine Aussage, dass ich Äpfel mit Birnen nicht ganz nachvollziehen. Tabelle ist Tabelle, nur dass das eine eine Accesstabelle ist und das andere eine Exceltabelle (bzw. Datenbereich).

Und genau wollte ich wissen (und sonst nichts): Warum läuft Pivot auf einer Excel Tabelle performanter als auf einer Accesstabelle.

Trotzdem Vielen Dank für die Bemühungen.

Gruss Salvo

Hallo Salvo,

Die Abfrage liefert im Moment ca. 14.000 Datensätze,

mal übersetzt: du hast eine Anzahl X? Tabellen. In diesen
Tabellen befinden sich X? Datensätze. Per Pivot-Abfrage nutzt
du einige der Tabellen die in ?Beziehung stehen? um per
?Bedingung? mit X? Kriterien eine „Auswahl“ zu treffen.

die sich aber bald um das 50-fache erhöhen können.

dann solltest du dir mal langsam überlegen, ob Access das
geeinete Mittel ist!

Nun ist es so, dass schon bei der relativ kleinen Anzahl von
Datensätzen Performanceprobleme bei der Erstellung eines
Pivotreports
einstellen.

definiere: relativ kleinen Anzahl -> in eine Zahl

Bereits wenn ich nur 5 Attribute

Attribute sind was anderes und keine Felder!

in der Reihe anordne und 2
ins Datenfeld ziehe dauert es ca. 30 sec. bis der Report
vollständig angezeigt wird.

vollkommen normal -> Access 2002, lahme Platte (ATA), wenig
RAM-Speicher und keine Front- / Backend Trennung.

D.H. wenn sich die Anzahl der Datensätze wie oben erwähnt erhöht,
muss ich mit Berechnungszeiten bis zu 25 min rechnen.

?? könntest du mir das mal vorrechnen?
Du hast eine Abfrage mit 7 Felder die untereinander in X?
Beziehung(en) stehen, darauf wendest du X? Bedingungen an, die
als Pivotergebnis X mögliche Ergebnisse liefert! Wenn du nun
die Anzahl der Felder proportional mit den Bedingungen
logarithmisch in ein Formel packst, das dann als Basis für die
RAMgröße nimmst, dementsprechend eine SATAII Platte nutzt, und
die User über ein Backend (Access 2007) auf die Daten eines
zentralen Servers mit 1 GB Anbindung zugreifen, kannst du in
etwa eine Aussage über die Zeit machen :smile:

Wa ich bereits versucht habe ist, als Datenquelle für die
Pivotreports keine Abfrage, sondern eine mit der MakeTable
Query erstellten Tabelle, die aus der Abfrage generiert wird
zu benutzen. Leider ohne spürbaren Unterschied.

welche Zeit (wofür) hast du gemessen?

Und nun kommts: Wenn ich in der Pivotansicht, die Daten nach
MS Excel exportiere

wie?

und mir dort den Pivotbericht erstelle,
dauert es vernachlässigbar kurz bis ich eine kompletten
Pivotreport (mit allen Attributen) erstellt habe.

logisch

Nun die Fragen an die Experten:

  1. Wie ist sowas möglich? Wieso ist Excel in dem Fall
    wesentlich schneller als Access?

du lieferst Excel die Daten „mundgerecht“. D.h. Excel hat
nicht mehr die „Arbeit“ sich die Daten selbst zusammen zu
suchen! Das spart Zeit.

Beispiel: Mit Access malst du ein Bild und läßt es dann von
Access fotografieren.
In Excel bekommst du das fertige Bild und mußt es nur noch
fotografieren.

  1. Wie ist es möglich, die Performance in Access für o.a.
    Anwendungsszenario effektiv zu erhöhen (auf Excel Niveau).

du vergleichst Äpfel mit Birnen! Wie oben beschrieben kannst
du die Performance von Access erhöhen. Aber das Bild „malen“
mußt du trotzdem erst mal.

  1. Zuätzlich wäre interessant zu wissen wie Access die einer
    Pivottable View zugrunde liegenden Daten intern abspeichert.

View = Abfrage = SQL

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)