Execution plans

Improving Query Performance in SQL Server

Dean Smith

Founder, Atamai Analytics

Optimization phase

Optimization phase

Improving Query Performance in SQL Server

Optimization phase

Optimization phase with description

Cost parameters evaluated include:

  • Processor usage
  • Memory usage
  • Data page reads
Improving Query Performance in SQL Server

Optimization phase

Optimization phase and execution engin

Cost parameters evaluated include;

  • Processor usage
  • Memory usage
  • Data page reads
Improving Query Performance in SQL Server

Information from execution plans

Execution plans can provide information on:

  • Whether indexes were used
  • Types of joins used
  • Location and relative costs of:
    • filter conditions
    • sorting
    • aggregations
Improving Query Performance in SQL Server

Estimated execution plan in SSMS

 

Estimated execution plan SSMS toolbar menu item

Improving Query Performance in SQL Server

Estimated execution plan in SSMS

 

Estimated execution plan SSMS toolbar menu item with tooltip

Improving Query Performance in SQL Server

Viewing executions plans in SSMS

Execution plan in SSMS

Improving Query Performance in SQL Server

Operator statistics

Execution plan operator statistics

Improving Query Performance in SQL Server

Reading execution plans

Execution plan operators

Improving Query Performance in SQL Server

Index example

SELECT * 
FROM Customers
WHERE CustomerID = 'PARIS';

Table scan operator

SELECT * 
FROM CustomersCI
WHERE CustomerID = 'PARIS';

Clustered index seek operator

Improving Query Performance in SQL Server

Sort operator example

SELECT FruitName, FruitType
FROM Fruits1

UNION

SELECT FruitName, FruitType
FROM Fruits2;

Execution plan with UNION

SELECT FruitName, FruitType
FROM Fruits1

UNION ALL

SELECT FruitName, FruitType
FROM Fruits2;

Execution plan with UNION ALL

Improving Query Performance in SQL Server

The same execution plan?

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

IN and EXISTS execution plan

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

IN and EXISTS execution plan

Improving Query Performance in SQL Server

Let's practice!

Improving Query Performance in SQL Server

Preparing Video For Download...