我有一个复杂的查询,它连接有大量数据的表。应用程序运行几次后查询超时。我能让它再次运行的唯一方法是重新启动SQL Server 或运行:
DBCC DROPCLEANBUFFERS;
有人能让我知道我应该研究什么吗?我正在努力缩小需要采取的措施来解决这个问题。有没有办法完全禁用查询的缓存?似乎缓存最终使它超时。
答案 0 :(得分:2)
TheGameiswar关于更新统计数据的建议是一个非常好的主意。但是,即使更新统计信息可以缓解超时问题,您也可能需要进一步调查。
听起来你得到的查询计划只适用于发送给它的一些参数,这可能导致参数嗅探;特别是对于严重偏斜的数据。
您是否尝试将option (recompile)
添加到查询中,或with recompile
是否为过程?
你检查了执行计划吗?
参考:
答案 1 :(得分:1)
您的查询似乎可能有过时的统计信息,请尝试更新查询中涉及的所有表的统计信息,这使得SQLServer很有可能获得正确的估算,这也会降低几个授权
如果在更新统计信息后发生这种情况,请尝试微调查询
更新统计信息,使用以下查询...也尝试使用完整扫描运行,即使这可能并非所有情况都需要
UPDATE STATISTICS tablename with fullscan;