Плани виконання

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

Dean Smith

Founder, Atamai Analytics

Етап оптимізації

Етап оптимізації

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

Етап оптимізації

Етап оптимізації з поясненням

Оцінювані параметри вартості:

  • Використання процесора
  • Використання пам'яті
  • Читання сторінок даних
Покращення продуктивності запитів у SQL Server

Етап оптимізації

Етап оптимізації та двигун виконання

Оцінювані параметри вартості:

  • Використання процесора
  • Використання пам'яті
  • Читання сторінок даних
Покращення продуктивності запитів у SQL Server

Інформація з планів виконання

Плани виконання показують:

  • Чи використовувалися індекси
  • Які типи JOIN застосовано
  • Розташування та відносну вартість:
    • фільтрів
    • сортування
    • агрегацій
Покращення продуктивності запитів у SQL Server

Оціночний план виконання в SSMS

 

Пункт меню панелі інструментів SSMS: Estimated execution plan

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

Оціночний план виконання в SSMS

 

Пункт меню панелі інструментів SSMS з підказкою: Estimated execution plan

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

Перегляд планів виконання в SSMS

План виконання в SSMS

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

Статистика операторів

Статистика оператора плану

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

Як читати плани виконання

Оператори плану виконання

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

Приклад індексу

SELECT * 
FROM Customers
WHERE CustomerID = 'PARIS';

Оператор повного сканування таблиці

SELECT * 
FROM CustomersCI
WHERE CustomerID = 'PARIS';

Оператор пошуку за кластеризованим індексом

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

Приклад оператора сортування

SELECT FruitName, FruitType
FROM Fruits1

UNION

SELECT FruitName, FruitType
FROM Fruits2;

План виконання з UNION

SELECT FruitName, FruitType
FROM Fruits1

UNION ALL

SELECT FruitName, FruitType
FROM Fruits2;

План виконання з UNION ALL

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

Той самий план виконання?

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

План виконання для IN та EXISTS

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

План виконання для IN та EXISTS

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

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

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

Preparing Video For Download...