一个MSSQL2000奇怪的现象!
linbz 2003-04-08 09:38:46 我的以下代码在查询分析器里调试只需要不到1秒种就完成了,但是把它做成存储过程却有可能超时,
而且它们的执行计划的步骤完全不一样!望高手指点,谢谢!
DECLARE @Date1 DATETIME,@Date2 DATETIME,@LadCode CHAR(10)
SET @Date1='2003-4-8 00:00:00'
SET @Date2='2003-4-8 23:59:59'
SET @LadCode='%'
SELECT
CAST(A.提货单号 AS CHAR(10)) 提货单号,vc_Name 规格型号,提货数量,de_Weight 发货数量,提货数量-de_Weight 提货量差,
100-ROUND((提货数量 - de_Weight) / 提货数量 * 100, 3) '完成率(%)',开票时间
FROM
(SELECT
提货单号,c_Code,vc_Name,开票时间,SUM(提货数量) 提货数量
FROM
yxzx.销售传票表 A
INNER JOIN
yxzx.销售传票附表 B
ON
A.传票号=B.传票号
INNER JOIN
OutPutCode C
ON
B.品种代码=C.c_OldCode
WHERE
(A.开票时间>=@Date1 AND A.开票时间<=@Date2) AND B.提货数量<>0
GROUP BY
提货单号,c_Code,vc_Name,开票时间
) A
LEFT JOIN
(SELECT
vc_LadCode,c_OutPutCode,SUM(de_Weight) de_Weight
FROM
SteelCon SC
INNER JOIN
SteelConSub SCS
ON
SC.vc_ConDoc=SCS.vc_ConDoc
WHERE
d_DateTime>=@Date1
GROUP BY
vc_LadCode,c_OutPutCode
UNION
SELECT
vc_LadCode,c_OutPutCode,SUM(de_Weight) de_Weight
FROM
SteelLinCon SC
INNER JOIN
SteelLinConSub SCS
ON
SC.vc_ConDoc=SCS.vc_ConDoc
WHERE
d_DateTime>=@Date1 AND d_DateTime<=@Date2+2
GROUP BY
vc_LadCode,c_OutPutCode
) B
ON
A.提货单号=B.vc_LadCode AND A.c_Code=B.c_OutPutCode
WHERE
A.提货单号 LIKE RTRIM(@LadCode)