Альтернативні методи 2

Покращення продуктивності запитів у 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 ...
... ... ... ...
Покращення продуктивності запитів у SQL Server

LEFT OUTER JOIN

Інклюзивне LEFT OUTER JOIN

Діаграма Венна: інклюзивний Left Outer Join

Ексклюзивний LEFT OUTER JOIN

Діаграма Венна: ексклюзивний Left Outer Join

Покращення продуктивності запитів у SQL Server

Ексклюзивний 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 ...
Покращення продуктивності запитів у SQL Server

Підсумок: INTERSECT і EXCEPT

INTERSECT: перевіряє наявність

EXCEPT: перевіряє відсутність

Переваги

  • Чудово для дослідження даних
  • Прибирає дублікати з результатів

Недолік

  • Кількість і порядок стовпців у SELECT мають збігатися між запитами
Покращення продуктивності запитів у SQL Server

Підсумок: EXISTS і NOT EXISTS

EXISTS: перевіряє наявність

NOT EXISTS: перевіряє відсутність

Переваги

  • Підзапит зупиняє пошук, щойно отримає TRUE
  • Результати можуть містити будь-які стовпці з зовнішнього запиту, у будь-якому порядку

Недолік

  • Результати можуть містити лише стовпці із зовнішнього запиту
Покращення продуктивності запитів у SQL Server

Підсумок: IN і NOT IN

IN: перевіряє наявність

NOT IN: перевіряє відсутність

Перевага

  • Результати можуть містити будь-які стовпці з зовнішнього запиту, у будь-якому порядку

Недоліки

  • Результати можуть містити лише стовпці із зовнішнього запиту
  • Немає результатів через те, як NOT IN обробляє null у підзапиті
Покращення продуктивності запитів у SQL Server

Підсумок: INNER JOIN і екскл. L.O.J

INNER JOIN: перевіряє наявність

ексклюзивний LEFT OUTER JOIN: перевіряє відсутність

Перевага

  • Результати можуть містити будь-які стовпці з усіх об'єднаних запитів, у будь-якому порядку

Недолік

  • Потрібно додати фільтр WHERE з IS NULL для ексклюзивного LEFT OUTER JOIN
Покращення продуктивності запитів у SQL Server

Давайте потренуємось!

Покращення продуктивності запитів у SQL Server

Preparing Video For Download...