Planos de execução

Melhorando o Desempenho de Consultas no SQL Server

Dean Smith

Founder, Atamai Analytics

Fase de otimização

Fase de otimização

Melhorando o Desempenho de Consultas no SQL Server

Fase de otimização

Fase de otimização com descrição

Parâmetros de custo avaliados incluem:

  • Uso de processador
  • Uso de memória
  • Leituras de páginas de dados
Melhorando o Desempenho de Consultas no SQL Server

Fase de otimização

Fase de otimização e mecanismo de execução

Parâmetros de custo avaliados incluem:

  • Uso de processador
  • Uso de memória
  • Leituras de páginas de dados
Melhorando o Desempenho de Consultas no SQL Server

Informações dos planos de execução

Planos de execução informam:

  • Se índices foram usados
  • Tipos de joins usados
  • Local e custos relativos de:
    • condições de filtro
    • ordenação
    • agregações
Melhorando o Desempenho de Consultas no SQL Server

Plano de execução estimado no SSMS

 

Item da barra de ferramentas do SSMS para plano de execução estimado

Melhorando o Desempenho de Consultas no SQL Server

Plano de execução estimado no SSMS

 

Item da barra de ferramentas do SSMS para plano de execução estimado com dica de ferramenta

Melhorando o Desempenho de Consultas no SQL Server

Visualizando planos de execução no SSMS

Plano de execução no SSMS

Melhorando o Desempenho de Consultas no SQL Server

Estatísticas do operador

Estatísticas do operador do plano de execução

Melhorando o Desempenho de Consultas no SQL Server

Lendo planos de execução

Operadores do plano de execução

Melhorando o Desempenho de Consultas no SQL Server

Exemplo de índice

SELECT * 
FROM Customers
WHERE CustomerID = 'PARIS';

Operador Table Scan

SELECT * 
FROM CustomersCI
WHERE CustomerID = 'PARIS';

Operador Clustered Index Seek

Melhorando o Desempenho de Consultas no SQL Server

Exemplo do operador Sort

SELECT FruitName, FruitType
FROM Fruits1

UNION

SELECT FruitName, FruitType
FROM Fruits2;

Plano de execução com UNION

SELECT FruitName, FruitType
FROM Fruits1

UNION ALL

SELECT FruitName, FruitType
FROM Fruits2;

Plano de execução com UNION ALL

Melhorando o Desempenho de Consultas no SQL Server

O mesmo plano de execução?

SELECT * 
FROM Customers
WHERE CustomerID IN 
    (SELECT CustomerID 
     FROM Orders);

Plano de execução de IN e EXISTS

SELECT * 
FROM Customers c
WHERE EXISTS
    (SELECT 1 
     FROM Orders o 
     WHERE c.CustomerID = o.CustomerID);

Plano de execução de IN e EXISTS

Melhorando o Desempenho de Consultas no SQL Server

Vamos praticar!

Melhorando o Desempenho de Consultas no SQL Server

Preparing Video For Download...