Sql server 如何清除最近运行的select查询的缓存?(或防止select查询缓存)

Sql server 如何清除最近运行的select查询的缓存?(或防止select查询缓存),sql-server,caching,sql-server-2012,query-optimization,sqlcachedependency,Sql Server,Caching,Sql Server 2012,Query Optimization,Sqlcachedependency,我正在使用MS SQL Server 2012。我试图在服务器中看到优化,所以我不能只清除所有内容 这对我不起作用。(或本) 有什么建议我可以选择查询并在之后清除缓存吗 (或者阻止它缓存会更好) 编辑: 最理想的结果是测试select查询,就像它是第一次运行一样。您可以查询sys.dm\u exec\u connections以获取给定连接的上次执行查询的句柄,然后使用DBCC FREEPROCCACHE退出该计划。确保在另一个连接上执行此操作 或者,使用带重新编译的或选项(重新编译)完全不缓存

我正在使用MS SQL Server 2012。我试图在服务器中看到优化,所以我不能只清除所有内容

这对我不起作用。(或本)

有什么建议我可以选择查询并在之后清除缓存吗
(或者阻止它缓存会更好)

编辑:

最理想的结果是测试select查询,就像它是第一次运行一样。

您可以查询
sys.dm\u exec\u connections
以获取给定连接的上次执行查询的句柄,然后使用
DBCC FREEPROCCACHE
退出该计划。确保在另一个连接上执行此操作

或者,使用带重新编译的
选项(重新编译)
完全不缓存计划:


目前我正在本地机器上尝试此功能。当我运行以下命令时:
CHECKPOINT;GO DBCC DROPCLEANBUFFERS;GO DBCC FREEPROCCACHE;转到DBCC FREESESSIONCACHE;GO
查询首先需要一分钟才能完成,当我运行DBCC FREEPROCCACHE或重新编译内容时,第二次查询不到一秒钟。。除了缓存之外,是否还有其他东西可以让它如此快速地保存?(第二次运行时不到1秒)是的,数据已缓存,每次重复检查点/DROPCLEANBUFFERS例程。在本地,这没关系,但在服务器中,我不能只清除所有缓存。。有没有办法让特定的查询像第一次查询一样运行?没有,您不能仅从数据缓冲区中清除选定的页面,只能清除选定的计划。但在应用
设置统计IO ON
时,您应该注意逻辑读取,以及
设置统计时间ON
中的CPU时间。