应用级查询的执行计划

时间:2010-12-23 11:01:21

标签: .net sql-server

我应该如何优化应用程序级别的SQL查询,我们有一个大型系统,其中包含至少30个数据访问类的sql,所有查询都嵌入到* .cs文件中。

是否有自动方式来获取所有这些查询的执行计划,以便我们可以找出丢失的索引?

2 个答案:

答案 0 :(得分:1)

您可以使用SQL Server Profiler记录所有查询,甚至包括执行计划。 您可以使用记录的跟踪来运行索引优化助手。

答案 1 :(得分:1)

您可以做的一件事是查询一些DMV以检索当前缓存的所有执行计划的列表。

e.g。

SELECT s.[text] AS SqlText,
    qp.query_plan
FROM sys.dm_exec_cached_plans p
    OUTER APPLY sys.dm_exec_sql_text (p.plan_handle) s
    OUTER APPLY sys.dm_exec_query_plan (p.plan_handle) qp

这将返回每个SQL查询,该查询在数据库中具有当前缓存的计划,以及相应的执行计划XML。为此,您需要运行应用程序并确保执行所有执行SQL的区域,以确保缓存这些语句。