今天我运行一个存储过程的时候,发现时间居然长达31秒
刚开始以为是服务器的问题,或者因为跨服务器访问而导致速度慢
但测试调拨单的时候,却没有发现速度慢得问题,
于是乎,我开始一条条语句进行测试,终于让我发现了问题的所在。
update QH_BAKEN.DB_CS.dbo.TF_POS set QTY_PS_UNSH = IsNull(QTY_PS_UNSH, 0) + @Num, QTY1_PS_UNSH = 0 where OS_ID = 'SO' and OS_NO = @OS_NO and ITM = @EST_ITM
QTY_PS_UNSH 在倍康系统中默认值就是Null,
因此为了简单,所以使用 QTY_PS_UNSH = IsNull(QTY_PS_UNSH, 0) + @Num
虽然找到了问题的所在,却让我冒出了一个问题来。在这个系统中 我的查询条件中有这种类似的用法
(ISNULL(B.QTY, 0) - ISNULL(B.QTY_PS, 0) - ISNULL(B.QTY_PRE, 0) - ISNULL(B.QTY_PS_UNSH, 0) - ISNULL(B.QTY_PRE_UNSH, 0) > 0)
这种用法是否也对查询效率造成比较大的影响?