Voor de leesbaarheid heb ik de query geherstructureerd... beginnend met het schijnbare hoogste niveau dat Tabel1 is, dat vervolgens aansluit op Tabel3, en vervolgens tabel3 op tabel2. Veel gemakkelijker te volgen als je de keten van relaties volgt.
Om nu je vraag te beantwoorden. U krijgt een grote telling als resultaat van een Cartesiaans product. Voor elk record in Tabel1 dat overeenkomt met Tabel3 heb je X * Y. Dan zal voor elke match tussen tabel3 en Tabel2 dezelfde impact hebben... Y * Z... Dus je resultaat voor slechts één mogelijke ID in tabel 1 kan X * Y * Z-records hebben.
Dit is gebaseerd op het niet weten hoe de normalisatie of inhoud is voor uw tabellen... of de sleutel een PRIMAIRE sleutel is of niet..
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
Dus het samenvoegen van Tabel 1 met Tabel 3 zal resulteren (in dit scenario) met 12 records (elk in 1 samengevoegd met elk in 3). Dan, dat alles opnieuw maal elk overeenkomend record in tabel 2 (5 records)... totaal van 60 (3 tbl1 * 4 tbl3 * 5 tbl2) zou worden geretourneerd.
Dus neem dat nu en breid uit op basis van je duizenden records en je ziet hoe een verknoeide structuur een koe zou kunnen verstikken (om het zo te zeggen) en de prestaties zou kunnen doden.
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