我正在处理存储过程,我们发现性能差异很大。从一组表中读取所有过程。
问题在于它通常以< 1s性能开始。然后,在本周晚些时候,相同的查询在> 7s中运行。我们希望保持这个< 1s。该问题可能与参数嗅探有关,但在这种情况下,重新编译语句不会对性能产生正面或负面影响。我们还在2个相同硬件的独立系统上重现了这种行为。
以下是我们所知道的:
这是我们试图无效的事情:
(FORCESEEK)
CREATE PROCEDURE usp_ProjectSummary @ProjectID INT
WITH RECOMPILE
这里有什么帮助以及我们到目前为止所处的位置:
使用
强制使用固定计划选项(保留计划)
定期运行以下2个语句以强制执行一个好的查询计划:
EXEC sp_recompile usp_ProjectSummary
EXEC usp_ProjectSummary @ProjectID