Jeśli uważasz, że implementacja LEFT JOIN to INNER JOIN + więcej pracy, to ten wynik jest mylący. Co jeśli implementacja INNER JOIN to (LEFT JOIN + filtrowanie)? Ach, teraz jest jasne.
W planach zapytań jedyna różnica jest taka:użytkownicy... dodatkowo:przy użyciu gdzie . Oznacza to filtrowanie. Jest dodatkowy krok filtrowania w zapytaniu z wewnętrznym sprzężeniem.
Jest to inny rodzaj filtrowania niż zwykle stosowany w klauzuli where. Utworzenie indeksu na A w celu obsługi tej akcji filtrowania jest proste.
SELECT *
FROM A
WHERE A.ID = 3
Rozważ to zapytanie:
SELECT *
FROM A
LEFT JOIN B
ON A.ID = B.ID
WHERE B.ID is not null
To zapytanie jest równoważne sprzężeniu wewnętrznemu. Nie ma indeksu na B, który pomoże w tej akcji filtrowania. Powodem jest to, że klauzula WHERE podaje warunek dotyczący wyniku złączenia, a nie warunek dotyczący B.