Sven Rautenberg: Nachtrag

Beitrag lesen

Moin!

So wie ich Erik verstanden habe macht das sehr wohl was. Er will jeweils eine Zeile aus zwei Tabellen haben und hat gefragt ob er nun (vereinfacht)
SELECT * FROM a; SELECT * FROM b;
oder
SELECT * FROM a,b;
machen soll. Letzteres ist aber (gelinde gesagt) suboptimal was die Performance angeht.

Ich glaub' ich kann nicht mehr so recht gucken, oder ich hab zu schnell gelesen. Du hast natürlich Recht: So ein JOIN wäre eher unpassend, weil ziemlich aufwendig. Es gibt meist bessere JOINs, die zunächst die relevanten Zeilen aus Tabelle 1 finden und dann mit den relevanten Zeilen aus Tabelle 2 verknüpfen. Sowas macht mehr Sinn. :)

Ok, also Kommando teilweise zurück:
SELECT a FROM b WHERE c=1
SELECT a FROM b WHERE c=2
...
macht keinen Sinn, aber

SELECT a.*,b.* from a,b WHERE c...
ist unter Umständen genauso böse. Es hängt aber wirklich von der Art der Abfrage ab, ob das Sinn macht oder nicht! Zwei nicht zusammenhängende Tabellen ohne logischen Bezug fragt man nicht so ab. Wenn hingegen die Tabellen verknüpft sind, kriegt man diese Bezüge entweder durch viele einzelne SELECTs und Programmcode oder durch einen einzigen JOIN aus der Datenbank abgefragt - und was da besser ist, kann nur ein Test sagen. Ich tendiere aber dazu, JOINs zu verwenden, weil die Datenbank für die Datenhaltung und Auslieferung zuständig ist, und nicht ich mit meinem Programm.

- Sven Rautenberg