Sql server 预测查询是否将使用缓存计划

Sql server 预测查询是否将使用缓存计划,sql-server,Sql Server,我有一个查询,它似乎没有导致或使用过程缓存中的条目,但当我查看统计数据时,我看不到任何用于解析等的资源的证据 我的问题是: 我可以使用什么方法来预测在执行时是否会使用缓存的计划 我应该担心我的查询没有被缓存还是应该考虑强制选项?< /P> 我的查询没有被缓存有什么原因吗 我的质询如下: set statistics io on set statistics time on select ps.permanentpolicyref, pt.effdate, pt.donedate, a.a

我有一个查询,它似乎没有导致或使用过程缓存中的条目,但当我查看统计数据时,我看不到任何用于解析等的资源的证据

我的问题是:

我可以使用什么方法来预测在执行时是否会使用缓存的计划

我应该担心我的查询没有被缓存还是应该考虑强制选项?< /P> 我的查询没有被缓存有什么原因吗

我的质询如下:

set statistics io on 
set statistics time on

select 

ps.permanentpolicyref,
pt.effdate,
pt.donedate,
a.agentref,
a.groupingcode,
pt.transactiontype,
pt.transactionstatus,
pt.BrokerQuoteSystem
from policytransaction pt 

inner join PolicyStatic ps on ps.refno = pt.refno
inner join Policy p on pt.PolicyId = p.PolicyId 
inner join Agents a on p.AgentID = a.AgentId

where 
pt.transactiontype in ('nb', 'ab', 'rb') 
and pt.transactionstatus in ('a', 'p')
and pt.policystatus <> 'd'
--and  a.groupingcode = '79584'
and pt.schemecode in  (45, 47, 48, 49, 50, 53, 54, 56)
and pt.donedate > '2009-12-01'
order by pt.donedate desc

您有什么证据表明未使用缓存的计划?您的查询是否参数化?您是在问如何跟踪查询重新编译扩展事件是最简单的方法,还是在问为什么要重新编译特定查询?如果在完全相同的查询中按F5两次,则会重用查询计划。如果您更改了任何内容,甚至添加了一个空格,则会重新编译临时查询。我一直在研究dm_exec_cached_plansMy query没有参数化,我只是在研究代码如何进入过程缓存。我将按照建议做,运行相同的代码两次,看看是否可以避免重新编译。我确实希望代码在第一次运行时进入过程缓存,然后在第二次运行时使用相同的计划