Альтернативные методы 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: проверяет отсутствие

Преимущество

  • Результаты могут содержать любые столбцы из всех объединяемых запросов в любом порядке

Недостаток

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

Давайте потренируемся!

Повышение производительности запросов в SQL Server

Preparing Video For Download...