sql >> Database teknologi >  >> RDS >> Sqlserver

SQL join-format - indlejrede indre joinforbindelser

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 


  1. Sådan indsætter du den aktuelle dato i rækkens kolonne

  2. Er der en måde at cache en visning på, så forespørgsler mod den er hurtige?

  3. Få tidspunktet for en datetime ved hjælp af T-SQL?

  4. SQL 2008:Deaktiver Stop Words for fuldtekstsøgning