Aby zapewnić czytelność, zmieniłem strukturę zapytania... zaczynając od pozornego najwyższego poziomu będącego Table1, który następnie łączy się z Table3, a następnie Table3 łączy się z tabelą2. O wiele łatwiej śledzić, jeśli podążasz za łańcuchem relacji.
Teraz odpowiem na twoje pytanie. Otrzymasz dużą liczbę w wyniku produktu kartezjańskiego. Dla każdego rekordu w Tabeli 1, który pasuje do Tabeli 3, otrzymasz X * Y. Następnie, dla każdego dopasowania pomiędzy Tabelą 3 i Tabelą 2 będzie miał ten sam wpływ... Y * Z... Więc Twój wynik dla tylko jednego możliwego identyfikatora w Tabeli 1 może mieć rekordy X * Y * Z.
Opiera się to na tym, że nie wiesz, jak wygląda normalizacja lub zawartość Twoich tabel... czy klucz jest kluczem PODSTAWOWYM, czy nie.
Ex:
Table 1
DiffKey Other Val
1 X
1 Y
1 Z
Table 3
DiffKey Key Key2 Tbl3 Other
1 2 6 V
1 2 6 X
1 2 6 Y
1 2 6 Z
Table 2
Key Key2 Other Val
2 6 a
2 6 b
2 6 c
2 6 d
2 6 e
Tak więc połączenie tabeli 1 z tabelą 3 spowoduje (w tym scenariuszu) 12 rekordów (każdy w 1 połączony z każdym w 3). Następnie wszystko to ponownie razy każdy dopasowany rekord w tabeli 2 (5 rekordów)... zostanie zwróconych łącznie 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 ).
A więc teraz weź to i rozwiń na podstawie swoich tysięcy rekordów, a zobaczysz, jak pomieszana struktura może udusić krowę (tak to powiem) i zabić wydajność.
SELECT
COUNT(*)
FROM
Table1
INNER JOIN Table3
ON Table1.DifferentKey = Table3.DifferentKey
INNER JOIN Table2
ON Table3.Key =Table2.Key
AND Table3.Key2 = Table2.Key2