TSQL:查找查询分别导致过多的SQL编译和SQL重新编译
我想找出是什么导致性能监视器计数器中出现的高SQL编译(不是重新编译)。 这是我的看法:如果我看到许多SQl编译,则意味着由于以下原因,我们的系统上的查询未得到缓存: 许多特别查询 运行SQl不缓存的查询,例如: UPDATE table1 SET col1 ='字符串长于8000个字符...'WHERE key_column =一些整数 计划正在超时并从缓存中删除,原因如下:缓存空间不足或计划使用时间不够长。 捕获捕获到探查器中的缓存插入的唯一方法是存储过程-> SP:CacheInserts,但它仅负责存储过程缓存。 所以我尝试了以下方法来获取即席查询: SELECT [cp].[refcounts] -- when Refcounts becomes 0, plan is excluded from cache. , [cp].[usecounts] , [cp].[objtype] , st.[dbid] , st.[objectid] , st.[text] , [qp].[query_plan] FROM sys.dm_exec_cached_plans cp CROSS APPLY sys.dm_exec_sql_text ( cp.plan_handle ) st CROSS …