Планы выполнения

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

Dean Smith

Founder, Atamai Analytics

Фаза оптимизации

Фаза оптимизации

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

Фаза оптимизации

Фаза оптимизации с описанием

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

  • Использование процессора
  • Использование памяти
  • Чтение страниц данных
Повышение производительности запросов в SQL Server

Фаза оптимизации

Фаза оптимизации и механизм выполнения

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

  • Использование процессора
  • Использование памяти
  • Чтение страниц данных
Повышение производительности запросов в SQL Server

Сведения из планов выполнения

Планы выполнения содержат сведения о:

  • Использовании индексов
  • Типах применяемых соединений
  • Расположении и относительной стоимости:
    • условий фильтрации
    • сортировки
    • агрегации
Повышение производительности запросов в SQL Server

Предполагаемый план выполнения в SSMS

 

Пункт меню панели инструментов SSMS для предполагаемого плана выполнения

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

Предполагаемый план выполнения в SSMS

 

Пункт меню панели инструментов SSMS с подсказкой для предполагаемого плана выполнения

Повышение производительности запросов в 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...