当前位置: 代码迷 >> Sql Server >> 100分求上列存储过程优化
  详细解决方案

100分求上列存储过程优化

热度:87   发布时间:2016-04-27 11:39:44.0
100分求下列存储过程优化
100分求下列存储过程优化
数据量很大,特别是第一次运动这个sp 的时候
数据量基本是百万级的
所以希望能够更快点
希望搞人指点下
SQL code
 
create table #tmptb(tmpUID int,tmpScheduledListUID int)

--Check Schedule unit changed or not changed
if exists(select * from Gps_PM_ScheduleConsumerLog where --ScheduledDate>[email protected] and ScheduledDate <[email protected] and
Consumer='PE Production Traveler' and ConsumerFlag=0)
begin
insert into #tmptb(tmpUID,tmpScheduledListUID)
select T1.UID,T1.[ScheduledListUID] from Gps_PE_PT_TCAndIPQC T1
inner join Gps_PE_ProductionTraveler T2 on T1.ScheduledListUID=T2.ScheduledListUID
where
exists(select * from Gps_PM_ScheduledList A
inner join Gps_PM_ScheduleConsumerLog B on A.ScheduledDate=B.ScheduledDate and A.LineUID=B.LineUID
where
--B.ScheduledDate>[email protected] and B.ScheduledDate <[email protected] and
B.Consumer='PE Production Traveler'
and B.ConsumerFlag=0 and A.ScheduledListUID=T2.ScheduledListUID)
and
(
exists(select * from Gps_PM_ScheduledList A
inner join Gps_PM_ScheduleConsumerLog B on A.ScheduledDate=B.ScheduledDate and A.LineUID=B.LineUID
where --B.ScheduledDate>[email protected] and B.ScheduledDate <[email protected] and
B.Consumer='PE Production Traveler'
and B.ConsumerFlag=0 and (A.LineUID <>T2.LineUID or A.ScheduledQty <>T2.ScheduledQty or A.SideUID <>T2.SideUID)
and A.ScheduledListUID=T2.ScheduledListUID)
)

--PM scheduled unit has tc
insert into #tmptb(tmpUID,tmpScheduledListUID)
select T1.UID,T1.[ScheduledListUID] from Gps_PE_PT_TCAndIPQC T1
inner join Gps_PE_ProductionTraveler T2 on T1.ScheduledListUID=T2.ScheduledListUID
where
(not exists(select * from Gps_PM_ScheduledList where ScheduledListUID=T2.ScheduledListUID))


--PM shcheduled unit has not any TC
insert into #tmptb(tmpUID,tmpScheduledListUID)
select -1,[ScheduledListUID] from Gps_PE_ProductionTraveler T1
where (not exists(select * from Gps_PM_ScheduledList where ScheduledListUID=T1.ScheduledListUID))

update Gps_PM_ScheduleConsumerLog set ConsumerFlag=1 where Consumer='PE Production Traveler' and ConsumerFlag=0 --and ScheduledDate>[email protected] and ScheduledDate <[email protected]
end

--delete the TC and IPQC by the changed schedule first 
IF EXISTS(SELECT * FROM #tmptb) 
BEGIN 
  DELETE FROM Gps_PE_PT_ReflowZones WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_Reflow WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_StencilPrintingParams WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_ScreenPrinting WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_SectionNotUse WHERE UID IN(SELECT tmpUID FROM #tmptb)   
  DELETE FROM Gps_PE_PT_SPI WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_CheckPoint_Previous WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_CheckPoint WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_PickPlace WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_Labelling WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_Depanel WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM GPS_PE_PT_LaserMarking WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_TakenActions WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_Remark WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_AOI WHERE UID IN(SELECT tmpUID FROM #tmptb) 
  DELETE FROM Gps_PE_PT_PartList WHERE UID IN(SELECT tmpUID FROM #tmptb)
  相关解决方案