我实现了一个存储过程,从网页调用这个存储过程需要 300 多毫秒,但是当在网页中编写脚本并调用 url 时,它会在 50 毫秒内执行完毕
需要采取哪些步骤来减少执行存储过程的时间。为什么 sp 比页面中的 db 脚本花费更多时间
答案1
查询计划是您在“幕后”查看 SQL Server 运行查询(包括存储过程)的方法的窗口。查看查询计划正在执行并使用索引和更新统计数据进行适当优化。
您还可以使用 SQL Server Profiler 来优化查询。使用“重播”模板运行跟踪,然后将跟踪输入数据库引擎优化顾问。这将提供(并可以实施)有关数据库元数据的建议,使 SQL Server 能够以最佳状态运行。
答案2
存储过程在第一次执行时使用当时提供的参数进行编译并存储在过程缓存中。
因此,缓存的执行计划可能不是您当前测试的参数集的最佳选择。请尝试dbcc freeproccache
并再次测试。
如果可行,那么您可能需要考虑向存储过程添加 WITH RECOMPILE 提示,以在每次执行时强制重新编译。