Kvůli čitelnosti jsem restrukturalizoval dotaz... počínaje zdánlivě nejvyšší úrovní je Tabulka1, která se pak váže k Tabulce3, a pak se Tabulka3 váže k Tabulce2. Mnohem snazší sledovat, pokud budete sledovat řetězec vztahů.
Nyní, abych odpověděl na vaši otázku. Získáváte velký počet jako výsledek kartézského součinu. Pro každý záznam v tabulce 1, který se shoduje v tabulce 3, budete mít X * Y. Potom bude mít každá shoda mezi tabulkou 3 a tabulkou 2 stejný dopad... Y * Z... Takže váš výsledek pouze pro jedno možné ID v tabulce 1 může mít X * Y * Z záznamů.
To je založeno na tom, že nevíte, jaká je normalizace nebo obsah vašich tabulek... jestli je klíč PRIMÁRNÍ nebo ne..
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že spojení tabulky 1 s tabulkou 3 bude mít za následek (v tomto scénáři) 12 záznamů (každý z 1 spojený s každým ze 3). Pak vše znovu krát každý odpovídající záznam v tabulce 2 (5 záznamů)... bude vráceno celkem 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 ).
Takže, teď to vezměte a rozšiřte na základě svých 1000 záznamů a uvidíte, jak by zpackaná struktura mohla udusit krávu (takříkajíc) a zabít výkon.
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