Per leggibilità, ho ristrutturato la query... iniziando con l'apparente livello più alto che è Table1, che quindi si collega a Table3 e quindi table3 si lega a table2. Molto più facile da seguire se segui la catena delle relazioni.
Ora, per rispondere alla tua domanda. Stai ottenendo un conteggio elevato come risultato di un prodotto cartesiano. Per ogni record in Table1 che corrisponde a Table3 avrai X * Y. Quindi, per ogni corrispondenza tra table3 e Table2 avrà lo stesso impatto... Y * Z... Quindi il tuo risultato per un solo possibile ID nella tabella 1 può avere record X * Y * Z.
Questo si basa sul non sapere come è la normalizzazione o il contenuto per le tue tabelle... se la chiave è una chiave PRIMARIA o meno..
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
Quindi, la tabella 1 che si unisce alla tabella 3 risulterà (in questo scenario) con 12 record (ciascuno in 1 unito con ciascuno in 3). Quindi, ancora una volta ogni record corrispondente nella tabella 2 (5 record)... verrebbe restituito un totale di 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 ).
Quindi, ora, prendilo ed espandilo in base alle tue migliaia di record e vedrai come una struttura incasinata potrebbe soffocare una mucca (per così dire) e uccidere le prestazioni.
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