【发布时间】:2011-03-23 03:21:55
【问题描述】:
我正在尝试在 SQL Server 2000 中优化以下查询。除了包含 200 万条记录的 Prod_Lot_Stage_Wise_Detl 表之外,每个表都有超过 300 000 行。
当我执行下面的查询时,不包括 LotStgWs.Finished_Pcs 字段(属于 Prod_Lot_Stage_Wise_Detl 表),结果会在 20 秒内出现。
但是,如果我包含 LotStgWs.Finished_Pcs 字段,则执行时间会超过 2 分钟。我不明白这里出了什么问题以及 SQL Server 2000 如何处理整数字段。为每个表正确定义了索引。
SELECT
JangRecv.Jangad_Ref_Code,
LotRecv.Total_Pcs Org_Pcs,
LotRecv.Total_Cts Org_Cts,
LotStgWs.Finished_Pcs,
(Isnull(ReEst.Exp_Wt,LotRecv.Exp_Yield)) Exp_Yield
FROM
Prod_Jangad_Receive_Tran JangRecv With(NoLock) Inner Join
Prod_Lot_receive_Tran LotRecv With(NoLock) On (JangRecv.Jangad_Seq_No = LotRecv.Jangad_Seq_No) Inner Join
Prod_Lot_Stage_Wise_Detl LotStgWs With(NoLock) On (
LotStgWs.Jangad_Seq_No = LotRecv.Jangad_Seq_No And
LotStgWs.Lot_Seq_No = LotRecv.Lot_Seq_No And
LotStgWs.Stage_Seq_No = ISNULL(
(SELECT MAX(Delv_Stage_Seq_No)
FROM Prod_Lot_Delivery_Tran
WHERE Jangad_Seq_No = JangRecv.Jangad_Seq_No
), JangRecv.Exp_Delv_Stage_Seq_No
)
) Left Outer Join
PPCS_QMA_Diamond_RE_Estimation ReEst With(NoLock) On (LotStgWs.Jangad_Seq_No = ReEst.Jangad_Seq_No And LotStgWs.Lot_Seq_No = ReEst.Lot_Seq_No And LotStgWs.Stage_Seq_No = ReEst.Stage_Seq_No)
Where
LotRecv.Lot_Recv_Div_Seq_No = 1
ORDER BY JangRecv.Jangad_Ref_Code, LotRecv.Lot_Num_Alias
【问题讨论】:
-
出于兴趣,30万是多少?
-
@nonnb:谷歌说 30 万是 30 万。
标签: sql-server-2000