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:
select A.zahl from A,B where A.zahl = B.zahl;
select A.zahl from A where exists ( select B.zahl from B where B.zahl = A.zahl);
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…