union vs union all vs union group by

25/11/2008 - 22:09 von Alexander Bierig | Report spam
Tag,

ich habe da mal wieder 'ne Dau-Frage.
Windows XP und Access XP

Wir haben eine Access DB umgestellt aut ANSI SQL92 und nun gehts um die
Performance hinter

select felda, feldb from tbl1
union all
select feldc, feldd from tbl2

Soweit, so klar.

nun aber
select felda, feldb from tbl1
union
select feldc, feldd from tbl2
muss ja zwingend langsamer sein wegen der Sortierung und dem folgenden
Distinct...

Was aber ist effizienter:

select felda, feldb from tbl1 group by felda,feldb
union all
select feldc, feldd from tbl2 group by feldc, feldd
oder
select felda, feldb from tbl1
union
select feldc, feldd from tbl2

Hintergrund der Frage:

Das Ganze ist etwas komplexer und geht übers Netz auf recht viele Daten mit
1-40 paralellen Zugriffen
(SQL-Server ist in dem Projekt nicht genehmigt auch mit Access als Frontend
nicht)
Und Access und Netz, dazu kommt gleich noch ne Frage...

Mit freundlichen Grüssen

Alex. Bierig

ich unterstütze WWW.SQLPASS.DE
 

Lesen sie die antworten

#1 Jens Schilling
26/11/2008 - 08:09 | Warnen spam
Hallo, Alexander

Alexander Bierig wrote:
Was aber ist effizienter:

select felda, feldb from tbl1 group by felda,feldb
union all
select feldc, feldd from tbl2 group by feldc, feldd
oder
select felda, feldb from tbl1
union
select feldc, feldd from tbl2

Hintergrund der Frage:

Das Ganze ist etwas komplexer und geht übers Netz auf recht viele
Daten mit 1-40 paralellen Zugriffen
(SQL-Server ist in dem Projekt nicht genehmigt auch mit Access als
Frontend nicht)
Und Access und Netz, dazu kommt gleich noch ne Frage...



Ich denke, man kann Dein Fragen - insbesondere unter der Berücksichtigung
des Hinweises, das es in der Realitàt noch viel komplexer ist - eigentlich
nur recht pauschal beantworten.

Wenn die Performance Dir Sorgen bereitet, gibt es schon in der Entwurfsphase
Deiner Tabellen Ansàtze, darauf Einfluss zu nehmen; ich bin z.b. immer sehr
skeptisch, ob das Datenmodell optimal ist, wenn ich Union-Abfragen sehe.

Wenn wie von Dir angedeutet Gruppierungen eine wichtige Rolle spielen,
sollte auch dies schon beim Tabellenentwurf Berücksichtigung finden; eine
wichtige Regel lautet, dass man Gruppierungen nur auf indizierten Feldern
vornehmen soll. Die Planung der Indexe spielt also ebenfalls eine wichtige
Rolle.

All dies - und noch viel mehr - hat aber Michael Zimmermann in seinem
Vortrag "Performance in Abfragen" wàhrend der 8. AEK dargestellt, und ich
möchte Dir nahelegen, Dir diesen doch einmal anzusehen. Hier ist er zu
finden :

http://www.donkarl.com/AEK/AEK_Downloads.htm

Gruss
Jens
______________________________
FAQ: http://www.donkarl.com

Ähnliche fragen