Métodos alternativos 2

Melhorando o Desempenho de Consultas no 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 ...
... ... ... ...
Melhorando o Desempenho de Consultas no SQL Server

LEFT OUTER JOIN

Inclusivo LEFT OUTER JOIN

Diagrama de Venn Left Outer Join inclusivo

Exclusivo LEFT OUTER JOIN

Diagrama de Venn Left Outer Join exclusivo

Melhorando o Desempenho de Consultas no SQL Server

LEFT OUTER JOIN exclusivo

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 ...
Melhorando o Desempenho de Consultas no SQL Server

Revisão: INTERSECT e EXCEPT

INTERSECT: verifica presença

EXCEPT: verifica ausência

Vantagens

  • Ótimo para investigar dados
  • Remove duplicatas dos resultados

Desvantagem

  • Número e ordem das colunas no SELECT devem ser os mesmos entre as consultas
Melhorando o Desempenho de Consultas no SQL Server

Revisão: EXISTS e NOT EXISTS

EXISTS: verifica presença

NOT EXISTS: verifica ausência

Vantagens

  • A subconsulta para assim que avaliar como TRUE
  • Os resultados podem conter qualquer coluna da consulta externa, em qualquer ordem

Desvantagem

  • Os resultados só podem conter colunas da consulta externa
Melhorando o Desempenho de Consultas no SQL Server

Revisão: IN e NOT IN

IN: verifica presença

NOT IN: verifica ausência

Vantagem

  • Os resultados podem conter qualquer coluna da consulta externa, em qualquer ordem

Desvantagens

  • Os resultados só podem conter colunas da consulta externa
  • Nenhum resultado por causa de como NOT IN lida com nulls na subconsulta
Melhorando o Desempenho de Consultas no SQL Server

Revisão: INNER JOIN e L.O.J exclusivo

INNER JOIN: verifica presença

LEFT OUTER JOIN exclusivo: verifica ausência

Vantagem

  • Resultados podem conter qualquer coluna, de todas as consultas unidas, em qualquer ordem

Desvantagem

  • É preciso adicionar a condição WHERE IS NULL com o LEFT OUTER JOIN exclusivo
Melhorando o Desempenho de Consultas no SQL Server

Vamos praticar!

Melhorando o Desempenho de Consultas no SQL Server

Preparing Video For Download...