2011-01-30 2 views
1

Как я могу захватить план выполнения SQL для запросов. Кто-то сказало, что я могу получить их через системные таблицыПлан выполнения SQL-сервера

+0

Для всех запросов? Чтобы настроить один запрос? Есть несколько способов, и это зависит от того, как вы собираетесь использовать данные плана – gbn

ответ

1

Как указано в gbn, существует несколько способов, которыми вы можете просмотреть планы выполнения запросов. Учитывая, что ваш вопрос ссылается на использование системных таблиц, я предполагаю, что вы говорите о представлениях динамического управления (DMV), и поэтому ваши интересы также интересуются только планами запросов, которые в настоящее время находятся в кеше плана.

Если вы заинтересованы в определении плана запроса для конкретного запроса из кэша плана, то вы можете использовать запрос вида, как показано ниже:

SELECT deqs.plan_handle , 
     deqs.sql_handle , 
     execText.text 
FROM sys.dm_exec_query_stats deqs 
     CROSS APPLY sys.dm_exec_sql_text(deqs.plan_handle) AS execText 
WHERE execText.text LIKE '%QueryText%' 

Для дальнейшего чтения, посмотрите на статью DMVs for Query Plan Metadata


Если сказать, что вы больше заинтересованы в анализе эффективности ваших самых малоэффективных запросов, которые в настоящее время ссылки в кэше плана, вы можете использовать отличный и свободно доступны SQL Server Performance Dashboard Reports.


Есть, конечно, другие методы для просмотра планов запросов, но, не зная точно, что это такое, что вы пытаетесь достичь, но они могут не соответствовать вашим потребностям.

Смежные вопросы