是否有明确的命令来强制SQL Server不要“缓存”我的查询结果?
我正在处理一个性能问题,当第二次调用完成长查询时,它太快了,为了在我进行修改时比较查询性能,我希望这种行为不会发生。
这可能吗?
是否有明确的命令来强制SQL Server不要“缓存”我的查询结果?
我正在处理一个性能问题,当第二次调用完成长查询时,它太快了,为了在我进行修改时比较查询性能,我希望这种行为不会发生。
这可能吗?
你这样做是不对的。改为使用精确测量:启用SET STATISTICS IO ON
然后SET STATISTICS TIME ON
比较查询。查看查询的逻辑读取次数,这将是提高性能的驱动因素。
如果您强制使用冷缓存(这是可能的),那么您正在针对错误的情况进行优化,因为大多数情况下您的生产服务器将被预热并从缓冲池提供数据。
此外,您第一次看到由查询驱动的大量 IO 也清楚地表明了表扫描。查询重写可能会有所帮助,但您真正的问题更可能是缺少索引,这就是您应该关注的问题。
是的。你会想看看这个:http ://www.mssqltips.com/sqlservertip/1360/clearing-cache-for-sql-server-performance-testing/ 。
您确定您指的是查询结果的缓存与执行计划吗?
可以使用以下方法在对象级别选择不缓存执行计划:
WITH RECOMPILE