[linux-l] SQL

olafBuddenhagen at gmx.net olafBuddenhagen at gmx.net
Fr Okt 20 13:24:30 CEST 2006


Hallo,

On Wed, Oct 18, 2006 at 09:17:45AM +0200, Volker Grabsch wrote:

> Was meint ihr dazu? Wo liegen die Vor- und Nachteile von expliziten
> JOINs? Wo liegen die Performance-Unterschiede? Was findet ihr
> übersichtlicher?

Performance-Unterschiede sollte es in der Regel nicht geben. Eher sollte
man auf feine semantische Unterschiede achten: Ein SELECT auf mehrere
Tabellen ist nur 'ne andere Schreibweise für ein INNER JOIN (ohne
ON-Klausel), während ein LEFT JOIN sich anders verhält. Auch muss man
bei LEFT JOIN auf Unterschiede zwischen einer Bedingung in ON und einer
in WHERE achten.

Ich finde es übersichtlicher, immer explizite JOINs zu verwenden, und
die entsprechende Verknüpfungsbedingung mit ON anzugeben -- in WHERE
gehören IMHO nur Filterbedingungen, alles andere is verwirrend.

Im Übrigen habe ich mir angewöhnt Tabellen, die garnicht im Result-Set
vorkommen, sondern nur intern für Auswahl/Verknüpfung benutzt werden,
grundsätzlich in Sub-SELECTS zu packen. Ist zwar etwas umständlich und
auch gewöhnungsbedürftig, dadurch werden aber komplexere Abfragen schön
strukturiert.

(Zumindest MySQL hat übrigens in der Regel keine Probleme damit, das zu
optimieren -- vorausgesetzt man macht es richtig... Etwas Probieren ist
da unter Umständen schon nötig.)

-Olaf-



Mehr Informationen über die Mailingliste linux-l