sql >> Databáze >  >> RDS >> Sqlserver

Je příliš mnoho zbytečných spojení zápachem kódu?

Pro některé návrhy je to naprosto legitimní řešení.

Řekněme, že máte hierarchii vztahů jedna k mnoha, jako je Customer - Order - Basket - Item - Price , atd., které lze nevyplnit na jakékoli úrovni:Customer nemusí mít žádné Orders , Order nemůže mít žádné Baskets , atd.

V tomto případě zadáte něco jako:

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

Upozorňujeme, že v některých případech může být neefektivní a může být nahrazen výrazem EXISTS nebo NOT EXISTS (pokud chcete pouze zjistit, zda odpovídající záznamy existují nebo neexistují v jiných tabulkách).

Podrobnosti o výkonu naleznete v tomto článku na mém blogu:



  1. RegEx s preg_match k nalezení a nahrazení PODOBNÉHO řetězce

  2. Jak najít duplicitní záznamy pomocí klauzule Seskupit podle a mít v SQL Server - SQL Server / Výukový program TSQL část 132

  3. Najděte přesnou shodu pomocí fulltextového vyhledávání

  4. Jak používat ROW_NUMBER ve sqlite