2

是否有明确的命令强制SQL Server不要“缓存”我的查询结果

我正在处理一个性能问题,当第二次调用完成长查询时,它太快了,为了在我进行修改时比较查询性能,我希望这种行为不会发生。

这可能吗?

4

3 回答 3

3

你这样做是不对的。改为使用精确测量:启用SET STATISTICS IO ON然后SET STATISTICS TIME ON比较查询。查看查询的逻辑读取次数,这将是提高性能的驱动因素。

如果您强制使用冷缓存(这是可能的),那么您正在针对错误的情况进行优化,因为大多数情况下您的生产服务器将被预热并从缓冲池提供数据。

此外,您第一次看到由查询驱动的大量 IO 也清楚地表明了表扫描。查询重写可能会有所帮助,但您真正的问题更可能是缺少索引,这就是您应该关注的问题。

于 2013-04-05T06:53:17.403 回答
2

是的。你会想看看这个:http ://www.mssqltips.com/sqlservertip/1360/clearing-cache-for-sql-server-performance-testing/ 。

于 2013-04-05T05:22:29.643 回答
1

您确定您指的是查询结果的缓存与执行计划吗?

可以使用以下方法在对象级别选择不缓存执行计划:

WITH RECOMPILE

值得一看:SQL Server 中 RECOMPILE 的使用和滥用(视频)

于 2013-04-05T05:31:11.893 回答