gpt4 book ai didi

sql-server - Delphi调用SQL Server存储过程慢

转载 作者:行者123 更新时间:2023-12-03 18:35:31 28 4
gpt4 key购买 nike

我很沮丧在SSMS中,当我使用参数执行存储过程时,该过程需要6秒钟。从具有相同参数的Delphi程序执行时,该过程需要26秒钟才能运行。我运行了SQL事件探查器,并运行了Devart的DBMonitor,它仅确认该时间实际上为26秒。

为了确保我将苹果与苹果进行比较,我在两种情况下都执行之前先清理了环境和缓存...

该过程具有所有varchar的7个可选参数(具有默认值)。

谁能指导我找到问题的根源?

提前致谢。

最佳答案

感谢@Alex K.的+1注释,使我找到了Slow in application Fast in SSMS,我得以指出问题所在。
尽管文章有30页,但花了7页才能理解和解决问题。

发现的2个最常见的问题是应用程序为运行查询设置的“参数嗅探”和“设置的不同选项”。

将参数值复制到过程的局部变量以避免参数嗅探(不会改变行为)之后,我查看了应用程序中设置的不同选项,例如:
ArithAbort,ansi_warnings,concat_null_yields_null等。

我们在应用程序中遇到的问题是,在Delphi中运行的应用程序在启动之前设置了很多选项:ArithAbort关闭,ansi_warnings关闭...包括concat_null_yields_null OFF

在我的情况下,导致问题的原因是concat_null_yields_null OFF
在SSMS中运行时(默认情况下),concat_null_yields_null为ON。

现在,我需要弄清楚此选项的开/关如何影响存储过程。

关于sql-server - Delphi调用SQL Server存储过程慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34208541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com