Ответ
В SQL Server Management Studio (SSMS) есть несколько основных способов:
1. Графический план выполнения (наиболее наглядный):
- Предполагаемый план (Estimated): Нажимаю
Ctrl+Lили кнопку "Display Estimated Execution Plan". Запрос не выполняется, план строится на основе статистики. - Фактический план (Actual): Включаю кнопку "Include Actual Execution Plan" (
Ctrl+M), затем выполняю запрос. Во вкладке Execution plan отобразится реальный план с метриками времени и количества строк.
2. Текстовый/XML план:
- Можно получить план в формате XML для детального анализа или сравнения.
SET STATISTICS XML ON; GO SELECT * FROM Sales.Orders WHERE OrderDate > '2023-01-01'; GO SET STATISTICS XML OFF;
На что смотрю в плане (сверху вниз, справа налево):
- Стоимость операций (Relative Cost %): Выявляю наиболее дорогие узлы (жирные стрелки).
- Тип доступа к данным: Index Seek (хорошо) vs Index/Table Scan (плохо, если таблица большая).
- Key Lookup (RID Lookup): Указывает на недостающий покрывающий индекс.
- Предупреждения: Жёлтые значки — например, "Missing Index", "Implicit Conversion".
- Фактические vs Оцененные числа строк: Большое расхождение говорит о устаревшей статистике.
- Дорогие операции:
Sort,Hash Match(Join/Aggregate),Spool.
Для анализа исторических проблем использую системные представления: sys.dm_exec_query_stats и sys.dm_exec_query_plan.