Code Poet Geschrieben 2. August 2006 Teilen Geschrieben 2. August 2006 Hallo! Seit einiger Zeit bin ich leider wieder gezwungen mit dieser Datenbank zu arbeiten. Bei einer recht simplen UNION - Query tritt nun folgendes Problem auf: einzeln für sich sind beide beteiligten Abfragen in 2 Sekunden fertig. (Zusammen etwa 240.000 Datensätze). Als UNION hingegen braucht die ganze Sache fast 50 Sekunden... Weiß jemand, woran das liegen kann? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevHB Geschrieben 2. August 2006 Teilen Geschrieben 2. August 2006 Tja, das liegt wohl rein an Access. Das Problem habe ich schon seit einigen Jahren, daran sieht man, dass Access eben keine "richtige" Datenbank ist, sondern nur eine Art Flatfile mit Indexierung und ein paar Erweiterungen. Liegt die Datei im Netzwerk? Wird die Abfrage in Access ausgeführt oder durch ein Frontend (z.B. VB o.ä.)? Eventuell hast Du die Möglichkeit die Abfragen in sich nochmal zu splitten, um so die steigende DS-Anzahl zu verringern, kann man aber schwer als Außenstehender beurteilen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ipu Geschrieben 3. August 2006 Teilen Geschrieben 3. August 2006 Hi, das liegt sehr wahrscheinlich an access. vielleicht hast du die möglichkeit, die beiden separaten abfragen als tabellen zu erstellen und über die beiden tabellen die dritte abfrage über die beiden tabellen statt über die beiden abfragen zu erstellen. das könnte die perfomance steigern. grüße von ipu Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 3. August 2006 Teilen Geschrieben 3. August 2006 Ich bin mir nicht sicher ob es in Access genauso ist. Bei Oracle kenne wir den Unterschied zwischen "Union" und "UNION ALL". "UNION ALL" ist das schnellere, da er einfach nur alle Datensätze der beiden Abfragen zusammen schmeißt. Bei "UNION" führt die Datenbank eine art distinct aus. Das bedeutet, das er prüft, ob es Datensätze gibt die in der ersten und in der zweiten Abfrage identisch sind. Also muss er einen Vergleich über 240.000 Datensätz ausführen. Also prüfe wie dein Union aussieht und versuche es ggf. mit union all. (ich hoffe das ist fachlich möglich, sonst hilft es manchmal über dieses "union" ergebnis noch eine View zu legen die einfach nur distinct ausführt, da der execution plan dann anders gebildet wird...). P.S. Ich bin auch kein Freund von Access (es verdient eigentlich nicht den Begriff Datenbank), aber ich glaube nicht, das Access bei diesen Kleinigkeiten schon aufgibt, da macht es sich der ein oder andere hier zu einfach... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 3. August 2006 Teilen Geschrieben 3. August 2006 poste mal dein query Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Code Poet Geschrieben 3. August 2006 Autor Teilen Geschrieben 3. August 2006 UNION ALL... darauf hätte ich selbst kommen müssen. Das löst jedenfalls das Problem, wenn es auch immer noch deutlich langsamer ist, als mit der richtigen Datenbank bzw. mit Einzelqueries. Noch 4 Monate bis zur Migration. :floet: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.