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

Lugter for mange Left Joins en kode?

Det er en helt legitim løsning til nogle designs.

Lad os sige, at du har et hierarki af en-til-mange-relationer som f.eks. Customer - Order - Basket - Item - Price , osv., som kan udfyldes på ethvert niveau:en Customer har muligvis ingen Orders , en Order kan ikke have nogen Baskets osv.

I dette tilfælde udsteder du noget som:

SELECT  *
FROM    Customer c
LEFT OUTER JOIN
        Order o
ON      o.CustomerID = c.ID
LEFT OUTER JOIN
        Basket b
ON      b.OrderID = c.ID
…

Bemærk, at det i nogle tilfælde kan være ineffektivt og kan erstattes med EXISTS eller NOT EXISTS (hvis du kun vil finde ud af, at de tilsvarende poster findes eller ikke findes i andre tabeller).

Se denne artikel i min blog for detaljer om ydeevne:



  1. Sådan optimeres denne MySQL-tabel yderligere til en enkelt forespørgsel

  2. Selvlukkende tags i XML i SQL Server

  3. Sådan rundes et tal op til det nærmeste heltal i SQL

  4. MySQL slette sætning optimering