我们有这个查询,多年来一直有效。
几个月前,它开始提供超时。
但是,如果我们重命名索引(在其名称中添加一些字符)并再次运行查询,则可以正常工作。日复一日,我们必须这样做。我们每天都重命名一个索引,然后再次查询。
问题是什么?我们如何解决这个问题?重命名索引如何解决超时问题?
答案 0 :(得分:2)
这些症状表明由于参数嗅探,正在使用次优的缓存查询计划。重命名索引会使缓存的计划无效,因此在下次使用时会生成一个新的,这对于查询参数值是最佳的。
如SQL Server documentation中所述,<node><phrase>North Korea</phrase></node>
或OPTION(RECOMPILE)
之类的查询提示可以避免参数嗅探。