# Sql Union (was Ist Schneller )



## JManuel (12. Januar 2005)

Hallo , 

 ich führe ein SQL UNION mit großen Datenmengen durch, und ich habe dazu zwei Alternativen, und ich weiss nun nicht , welche Methode schneller ist. Kann mir das einer sagen:

  Ausgangspunkt : 
  2 gleiche Tabellen C, C2    
  1 Tabelle People
  Ich möchte alle Results der Tabellen C und C2 und falls ID korrekt , zusätzlich die Werte der Tabelle People.

  Methode 1: ( hier wird der JOIN seperat zu jeder Tabelle ausgeführt, und dann der UNION)

  SELECT C.*, P.ID, P.Name 
      FROM People1  C 
  A LEFT OUTER JOIN COLOR C ON A.ID = P.ID 
  UNION 
  SELECT C2.*,  PP.ID, PP.Name 
       FROM  People2 C2  
  LEFT OUTER JOIN COLOR PP ON C2.ID = PP.ID

  Methode 2: ( zuerst alle Tabellen mit UNION und dann der Join darauf )

  SELECT AGG.*, P.ID, P.Name 
         FROM ( 
                     SELECT C.* FROM People C UNION  SELECT C2.* FROM  People2  C2 
                    ) AGG 
  LEFT OUTER JOIN CDIS.COLOR P ON AGG.ID  = P.ID

 Könnt ihr mir bitte auch sagen, wieso die eine Methode schneller ist als die andere, oder irre ich mich da, und beider Methode haben die selbe Ausfürhrungszeit ?


  Danke,
     -Manuel


----------



## Oliver Gringel (12. Januar 2005)

Wie wäre es, wenn du es einfach ausprobierst. Oder sollen wir die Tests für dich durchführen. Außerdem wird das evtl. auch von der Datenbank abhängen, die du benutzt.


----------



## JManuel (12. Januar 2005)

Hi,

 sicher sollte ich es ausprobieren. Hab es auch gemacht und habe dabei keine Unterschiede feststellen können, was ich eher an einer Antwort gedacht habe ist viellleicht eine theoretische Antwort die erklärt, wieso beide gleich oder eine der Varianten schneller ist. Das DB-System ist DB2.

 Meine Erklärung ist die folgende, bin mir aber nicht sicher: Die Variante 1 ist schneller, weil hier kein großer UNION in den Speicher abgelegt werden muss. Der Join wird auf eine kleinere Datenmenge ausgeführt und in die Ergebnissmenge zurückgeschrieben. Anschließend wird das nächste Teilstück nach dem UNION ausgeführt. Wie gesagt, ich bin überhaupt nicht fit in SQL und stelle daher diese Frage.

  Danke,
  JManuel


----------



## JManuel (13. Januar 2005)

habe den Test noch einmal ausgefürht. der DB2 Zugriffsplan gibt bei Methode 1 geschätzte Kosten 157,11 timerons und bei Methode 2 geschätzte Kosten 105,11 timerons

nun noch eine Frage: Die Kosten sind für Methode 2 kleiner, bedeuted dies auch eine kürzere Ausführungszeit ?


----------

