*Markus: (SQL) Welche SELECT-Anweisung am "besten"?

Beitrag lesen

Hallo,

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:

  
SELECT DISTINCT L_NAME, V_ART  
FROM Vorgesetzte  
INNER JOIN (Lehrer  
    INNER JOIN Stunden  
    ON Stunden.ST_L_Lehrer = Lehrer.L_ID)  
ON Lehrer.L_L_CHEF = Vorgesetzte.V_L_VORG  
WHERE Stunden.ST_STUNDE LIKE 'MO%';  
  
SELECT DISTINCT L_NAME, V_ART  
FROM Stunden  
INNER JOIN (Lehrer  
     INNER JOIN Vorgesetzte  
     ON Lehrer.L_L_CHEF = Vorgesetzte.V_L_VORG)  
ON Stunden.ST_L_LEHRER = Lehrer.L_ID  
WHERE Stunden.ST_STUNDE LIKE 'MO%';  
  
SELECT DISTINCT L_NAME, V_ART  
FROM Stunden, Lehrer, Vorgesetzte  
WHERE Lehrer.L_L_CHEF = Vorgesetzte.V_L_VORG  
AND Stunden.ST_L_LEHRER = Lehrer.L_ID  
AND Stunden.ST_STUNDE LIKE 'MO%';  

Alle 3 Anweisungen machen das selbe, aber zumindest die letzte Anweisung sollte entweder effizienter oder weniger effizient als als oberen 3 sein. Welche Vorgehensweise ist stets am besten geeignet? Mit JOINs zu arbeiten, oder mit der Aneinanderreihung wie im letzten Beispiel?
Es ist mir natürlich klar, dass das letzte Beispiel kein LEFT oder RIGHT JOIN zulässt, sondern immer nur ein INNER JOIN simuliert.

Markus