Hallo Markus,
ich will aus 3 Tabellen die Lehrer ausgeben, die am Montag unterricht haben, inkl. deren Vorgesetzten. Das könnte ich auf 3 verschiedene Varianten lösen:
Alle 3 Anweisungen machen das selbe, aber zumindest die letzte Anweisung sollte entweder effizienter oder weniger effizient als als oberen 3 sein.
warum sollte das so sein?
Welche Vorgehensweise ist stets am besten geeignet?
Darauf gibt es keine Antwort. Dafür sorgt allein das Wort "stets".
Mit JOINs zu arbeiten, oder mit der Aneinanderreihung wie im letzten Beispiel?
Implizite Joins. Ich mag sie nicht, ich verliere die Übersicht. Ich mag
explizite Joinsyntax. Das ist meine persönliche Vorliebe. Es bleiben dennoch
Joins. Bei MySQL sollen explizite Joins mal schneller abgearbeitet worden
sein. Das ist aber meines Wissens vorbei.
Es ist mir natürlich klar, dass das letzte Beispiel kein LEFT oder RIGHT JOIN zulässt, sondern immer nur ein INNER JOIN simuliert.
Diverse SQL-Dialekte wie die des MS SQL Server oder von Oracle unterstützen
auch implizite OUTER JOINs mit proprietärer Syntax.
Denke daran, dass das DBMS einen Optimierer besitzt, der Dein Statement
eventuell umschreibt, dass Du Dir den Aufwand anschauen kannst, den Deine
Anweisung verursacht. Schau es Dir an, pack genügend Daten in Deine Tabellen.
Erstelle ggf. fehlende Indexe.
Freundliche Grüße
Vinzenz