Россия, г. Санкт-Петербург |
Лекция 35: Использование SQL Query Аnalyzer и SQL Profiler
Просмотр плана для операции связывания
Выполнение какой-либо операции связывания (join) включает в себя намного больше процессов, чем будет показано в панели Estimated Execution Plan ниже в этой лекции. Операция связывания выполняет доступ к нескольким таблицам, сопровождаемый связыванием (объединением) считываемых данных. (Операции связывания рассматриваются в "Извлечение данных при помощи Transact-SQL" .) Вот пример оператора с операцией связывания:
SELECT OrderID, CustomerID, Employees.EmployeeID, FirstName, LastName, OrderDate FROM Orders JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
Сюда включен оператор SQL-92 JOIN. Использование этого оператора является рекомендованным способом связывания в SQL Server 2000. В следующем операторе используется более традиционный синтаксис связывания, который по-прежнему поддерживается в SQL Server:
SELECT OrderID, CustomerID, Employees.EmployeeID, FirstName, LastName, OrderDate FROM Orders, Employees WHERE Orders.EmployeeID = Employees.EmployeeID
Любой из этих операторов T-SQL связывает таблицы Orders и Employees по колонке EmployeeID. Результирующий оценочный план исполнения показан на рис. 35.9.
В этой панели видно, какое из двух поддеревьев имеет более высокую стоимость. Вы также видите тип планируемой операции связывания. SQL Server поддерживает несколько операций связывания, включая хеш-связывание, связывание вложенных цепочек и связывание слиянием. При использовании комплексной операции связывания план исполнения может оказаться очень сложным. (Query Analyzer регулирует размер панели Estimated Execution Plan, чтобы вместить нужно количество ветвей.) Поскольку нашей целью является сокращение времени ЦП и количества операций ввода-вывода, вам нужно попытаться определить, можно ли выбрать лучший план исполнения. В некоторых случаях вы можете применить подсказку, указывающую использование определенного индекса, сокращая тем самым время использования ЦП и интенсивность операций ввода-вывода. Вы можете также использовать подсказки в операциях связывания таблиц. Для запроса (рис. 35.9), возможно, выбран наилучший план исполнения, поскольку в предложении FROM связывание является единственной операцией.
Просмотр плана для операции агрегирования
Показанный здесь оператор T-SQL выполняет не только операцию связывания, но также операцию агрегирования:
SET QUOTED_ IDENTIFIER ON GO SELECT CustomerID, SUM("Order Details".UnitPrice) FROM Orders JOIN "Order Details" ON Orders.OrderID = "Order Details".OrderID GROUP BY CustomerID
Панель Estimated Execution Plan для этой комплексной операции показана на рис. 35.10.
увеличить изображение
Рис. 35.10. Операция агрегирования, представленная в панели Estimated Execution Plan

Просмотр плана для хранимой процедуры
Для просмотра плана исполнения хранимой процедуры нужно просто вызвать эту хранимую процедуру из окна Query Analyzer. В панели Query Analyzer будет выведен оценочный план вызванной вами хранимой процедуры. На рис. 35.11 показан план для процедуры sp_who. (Отметим, что план исполнения этой широко используемой хранимой процедуры очень сложен.) Вы можете просматривать план исполнения хранимой процедуры, не зная, какие операторы T-SQL образуют эту процедуру.
увеличить изображение
Рис. 35.11. План исполнения хранимой процедуры, показанный в панели Estimated Execution Plan