日期:2014-05-17  浏览次数:20480 次

在存储过程中设置SET ANSI_WARNINGS OFF出现的效率低下问题

在sqlserver 2008 中的一个存储过程A中设置SET ANSI_WARNINGS OFF,A存储过程过程用于调用其他存储过程B,C,D.其中B,C,D进行大量的计算操作。
当在A存储过程中设置SET ANSI_WARNINGS OFF后,效率非常低下
当在A存储过程中设置SET ANSI_WARNINGS OFF后,执行效率恢复到正常预期范围内。
现在想问一下为何SET ANSI_WARNINGS OFF对执行效率产生如此大的影响,谢谢大家。

------解决方案--------------------
没听说过这些会有影响,你把两次i的执行计划对比一下看看有什么差异会比较实际一点
------解决方案--------------------
也有可能你这个设定会引起类型等的转换,耗时
------解决方案--------------------
搞个执行计划来看看,两个查询的
------解决方案--------------------
探讨

搞个执行计划来看看,两个查询的

------解决方案--------------------
为什么要设置为off 呢

这些警告本来都可以被忽略吗?

有可能就是on的时候有警告了部分操作被终止了
off 的时候完成了所有操作,然后就慢了
------解决方案--------------------
请先把执行计划弄出来看看。不要让大家瞎猜。无论怎么诡异的查询,基本上都可以从执行计划里面得到点眉目。
------解决方案--------------------
我不相信设置这个会对性能产生影响