我应该如何优化应用程序级别的SQL查询,我们有一个大型系统,其中包含至少30个数据访问类的sql,所有查询都嵌入到* .cs文件中。
是否有自动方式来获取所有这些查询的执行计划,以便我们可以找出丢失的索引?
答案 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的区域,以确保缓存这些语句。