Alternativa metoder 2

Förbättra frågeprestanda i SQL Server

Dean Smith

Founder, Atamai Analytics

INNER JOIN

SELECT c.CustomerID
      ,c.CompanyName
      ,o.OrderID
      ,o.OrderDate
      ,o.ShippedDate
      ,o.Freight
FROM Customers c
INNER JOIN Orders o
    ON c.CustomerID = o.CustomerID
CustomerID CompanyName OrderID ...
VINET Vins et alcools Chevalier 10248 ...
HANAR Hanari Carnes 10250 ...
VICTE Victuailles en stock 10251 ...
SUPRD Suprêmes délices 10252 ...
... ... ... ...
Förbättra frågeprestanda i SQL Server

LEFT OUTER JOIN

Inkluderande LEFT OUTER JOIN

Venndiagram inkluderande vänster yttre join

Exkluderande LEFT OUTER JOIN

Venndiagram exkluderande vänster yttre join

Förbättra frågeprestanda i SQL Server

Exkluderande LEFT OUTER JOIN

SELECT c.CustomerID
      ,c.CompanyName
      ,o.OrderID
      ,o.OrderDate
      ,o.ShippedDate
      ,o.Freight
FROM Customers c
LEFT OUTER JOIN Orders o
    ON c.CustomerID = o.CustomerID
WHERE o.CustomerID IS NULL
CustomerID CompanyName OrderID ...
FISSA FISSA Fabrica Inter. Salchichas S.A. NULL ...
PARIS Paris spécialités NULL ...
Förbättra frågeprestanda i SQL Server

Repetition: INTERSECT och EXCEPT

INTERSECT: kontrollerar förekomst

EXCEPT: kontrollerar avsaknad

Fördelar

  • Bra för att utforska data
  • Tar bort dubbletter från resultaten

Nackdel

  • Antalet och ordningen på kolumner i SELECT-satsen måste vara identisk mellan frågorna
Förbättra frågeprestanda i SQL Server

Repetition: EXISTS och NOT EXISTS

EXISTS: kontrollerar förekomst

NOT EXISTS: kontrollerar avsaknad

Fördelar

  • Underfrågan slutar söka så snart den utvärderas till TRUE
  • Resultaten kan innehålla vilken kolumn som helst från yttre frågan, i valfri ordning

Nackdel

  • Resultaten kan bara innehålla kolumner från yttre frågan
Förbättra frågeprestanda i SQL Server

Repetition: IN och NOT IN

IN: kontrollerar förekomst

NOT IN: kontrollerar avsaknad

Fördel

  • Resultaten kan innehålla vilken kolumn som helst från yttre frågan, i valfri ordning

Nackdelar

  • Resultaten kan bara innehålla kolumner från yttre frågan
  • Inga resultat returneras på grund av hur NOT IN hanterar null-värden i underfrågan
Förbättra frågeprestanda i SQL Server

Repetition: INNER JOIN och exkluderande L.O.J

INNER JOIN: kontrollerar förekomst

exkluderande LEFT OUTER JOIN: kontrollerar avsaknad

Fördel

  • Resultaten kan innehålla vilken kolumn som helst, från alla sammanfogade frågor, i valfri ordning

Nackdel

  • IS NULL som WHERE-villkor måste läggas till vid exkluderande LEFT OUTER JOIN
Förbättra frågeprestanda i SQL Server

Nu kör vi en övning!

Förbättra frågeprestanda i SQL Server

Preparing Video For Download...