我从一个网站上查询数据,需要15-30秒,但是同样的查询在SQL Server Management Studio中只需要0.5秒。使用SQL Profiler没有发现任何锁定问题,我也无法通过SSMS手动重现延迟。一周前,我分离并重新连接了数据库,这似乎神奇地解决了问题。今天问题再次出现时,我尝试仅仅重建索引。这也解决了问题。然而,我不认为这必然是索引问题,因为据我所知,简单的分离/连接操作不会自动重建索引。
有什么想法是什么原因导致了这种延迟吗?我的第一个想法是可能是存储过程参数嗅探(该存储过程运行CTE,如果这很重要)导致了错误的查询计划,这可以解释问题的间歇性。既然分离/重新连接和索引重建都应该理论上使缓存的查询计划失效,这是有道理的,但我不确定如何验证这一点。此外,为什么直接从SQL Profiler复制具有完全相同参数的相同查询,在SSMS中手动运行时没有表现出相同的延迟呢?
您有什么想法吗?