我昨天运行的查询不在计划缓存中,但较旧的和较新的查询却在计划缓存中。为什么?

J. *_*ini 0 sql-server plan-cache sql-server-2019

昨天,我运行了一个大型临时查询,但没有保存。今天,我想再看一遍。我想我应该在计划缓存中寻找。令我惊讶的是,我可以找到较旧的查询和较新的查询,但找不到我运行的查询。为什么会这样?

我知道我应该打开查询存储,但我还没有这样做。

Eri*_*ing 8

来自计划缓存内部

确定驱逐哪些计划是基于计划的成本,这将在下一节中讨论。驱逐何时开始取决于内存压力。当SQL Server检测到内存压力时,零成本计划将从缓存中删除,所有其他计划的成本减少一半。

然后:

从缓存中逐出计划是基于其成本的。对于临时计划,成本被认为是零,但每次重用计划时成本都会增加一。对于其他类型的计划,成本是对制定计划所需资源的衡量。

这里的第二句话可能回答了为什么您的一次性即席查询计划消失了,而其他查询计划却没有。