Vergleich zweier Tabellen

Hi all,

Ich habe zwei Tabellen A und B, die jeweils nur eine Spalte enthalten nämlich: zahl.

Ich habe jetzt zwei verschieden Arten gefunden wie ich mir mit Hilfe einer sql-abfrage diejenigen zahlen ausgeben lassen kann, die in beiden Tabellen enthalten sind.

Ich bin mir jetzt nur nicht sicher, wo der unterschied zwischen diesen beiden abfragen liegt? bzw. machen die beiden Abfragen wirklich das selbe?

Hier sind die Abfragen:

  1. select A.zahl from A,B where A.zahl = B.zahl;

  2. select A.zahl from A where exists ( select B.zahl from B where B.zahl = A.zahl);


    Thx for help,
    gruß mentor

Die Antworten bekommt Du, wenn Du vor das select noch EXPLAIN schreibst.

Andreas

hi,

der Query Plan sagt mir leider nicht allzuviel…

kluge_mycoplasma=> explain select a.zahla from a,b where a.zahla = b.zahlb;
QUERY PLAN

Merge Join (cost=299.56…653.73 rows=22898 width=4)
Merge Cond: (a.zahla = b.zahlb)
-> Sort (cost=149.78…155.13 rows=2140 width=4)
Sort Key: a.zahla
-> Seq Scan on a (cost=0.00…31.40 rows=2140 width=4)
-> Sort (cost=149.78…155.13 rows=2140 width=4)
Sort Key: b.zahlb
-> Seq Scan on b (cost=0.00…31.40 rows=2140 width=4)
(8 rows)

kluge_mycoplasma=> explain select a.zahla from a where exists ( select b.zahlb from b where b.zahlb = a.zahla);
QUERY PLAN

Seq Scan on a (cost=0.00…7180.95 rows=1070 width=4)
Filter: (subplan)
SubPlan
-> Seq Scan on b (cost=0.00…36.75 rows=11 width=4)
Filter: (zahlb = $0)
(5 rows)


Ich mein mir ist schon klar, dass sql die ergebnise auf zwei unterschiedliche
Art und Weisen berechnet, aber wie die einzelnen Verfahren aussehen sollen,
kann ich leider nicht aus dem Query Plan ersehen…