Jest to całkowicie uzasadnione rozwiązanie dla niektórych projektów.
Załóżmy, że masz hierarchię relacji jeden-do-wielu, taką jak Customer - Order - Basket - Item - Price itp., które można wypełnić na dowolnym poziomie:Customer może nie mieć Orders , Order nie może mieć Baskets itp.
W takim przypadku wydajesz coś takiego:
SELECT *
FROM Customer c
LEFT OUTER JOIN
Order o
ON o.CustomerID = c.ID
LEFT OUTER JOIN
Basket b
ON b.OrderID = c.ID
…
Zauważ, że w niektórych przypadkach może to być nieefektywne i może zostać zastąpione przez EXISTS lub NOT EXISTS (jeśli chcesz tylko dowiedzieć się, czy odpowiednie rekordy istnieją lub nie istnieją w innych tabelach).
Zobacz ten artykuł na moim blogu, aby uzyskać szczegółowe informacje na temat wydajności:
- Znajdowanie niekompletnych zamówień
- jak skorzystać z zastąpienia
LEFT JOINjest zNOT EXISTS