Af hensyn til læsbarheden omstrukturerede jeg forespørgslen... begyndende med at det tilsyneladende øverste niveau er Tabel1, som derefter knytter sig til Tabel3, og derefter Tabel3 knytter sig til Tabel2. Meget nemmere at følge, hvis du følger kæden af relationer.
Nu for at besvare dit spørgsmål. Du får et stort antal som et resultat af et kartesisk produkt. For hver post i tabel1, der matcher i tabel3, vil du have X * Y. Derefter vil for hver match mellem tabel3 og tabel2 have den samme effekt... Y * Z... Så dit resultat for kun et muligt ID i tabel 1 kan have X * Y * Z-poster.
Dette er baseret på ikke at vide, hvordan normaliseringen eller indholdet er for dine tabeller... om nøglen er en PRIMÆR nøgle eller ej.
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
Så Tabel 1, der slutter sig til Tabel 3, vil resultere (i dette scenarie) med 12 poster (hver i 1 sluttet med hver i 3). Så ville alt det igen gange hver matchede post i tabel 2 (5 poster)... i alt 60 (3 tbl1 * 4 tbl3 * 5 tbl2) tæller blive returneret.
Så nu, tag det og udvid baseret på dine 1000-vis af optegnelser, og du kan se, hvordan en rodet struktur kunne kvæle en ko (så at sige) og dræbe ydeevnen.
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