kris norman
asked on
Query Performance: TSql - Insert..Into Select From taking lot of time.
Sql Server 2005:
Just Select statement is taking about 45 seconds.
But Insert Into...Select From iis taking lot of time, more than 10 hours some times.
Your suggestion is appreciated
INSERT INTO dbtemp.dbo.tbl_PLIB_CrossR eferenced_ Staging_Te st
([PrimaryKey],[BIViewID],[ CountryKey ],[RegionK ey],[SrvOr dKey],[Srv Ord],[SrvO rdCreatedD ateKey],[S rvOrdCreat edTimeKey] ,[SrvOrdCr eatedDate] ,[SrvOrdLo cOriginKey ]
,[SrvOrdLocDestinationKey] ,[SrvOrdCA CWarrantyK ey],[SrvOr dCSAWarran tyKey],[Sr vOrdDecisi onKey],[Sr vOrdStatus Key],[SrvO rdCategory Key],[Carr ierKey],[M odelKey]
,[SerialNbrKey],[SerialNbr ],[UnitPro cessStepKe y],[Reinci denceKey], [LegKey],[ LegProcSte pInitSODat eKey],[Leg ProcStepIn itSOTimeKe y],[LegPro cStepInitS ODate]
,[LegProcStepInitDateKey], [LegProcSt epInitTime Key],[LegP rocStepIni tDate],[Le gProcStepS topSODateK ey],[LegPr ocStepStop SOTimeKey] ,[LegProcS tepStopSOD ate]
,[LegProcStepStopDateKey], [LegProcSt epStopTime Key],[LegP rocStepSto pDate],[Le gResponsib leInitKey] ,[LegRespo nsibleStop Key],[LegR angeKey],[ LegSLAKey]
,[JustificationKey],[SLASt atusKey],[ AdjSLAStat usKey],[Ju stificatio nComments] ,[Justific ationDateK ey],[Justi ficationTi meKey],[Ju stificatio nDate]
,[UnitFailures],[UnitSolut ions],[Cus tomerVIP], [LegCost], [LegSLATar get],[LegD ifference] ,[CrtDate] ,[BIViewTi mestamp])
SELECT C.[PrimaryKey],C.[BI_VIEW_ ID],DC.[Co untryKey], DR.[Region Key],DS.[S rvOrdKey], C.[SERVICE _ORDER_ID] ,DD1.[Date Key],DT1.[ TimeKey],C .SERVICE_O RDER_CREAT ION,DL1.[S rvOrdLocat ionKey]
,DL2.[SrvOrdLocationKey],D W1.[SrvOrd LocWarrant yKey],DW2. [SrvOrdLoc WarrantyKe y],DSD.[Sr vOrdDecisi onKey],DSS .[SrvOrdSt atusKey],D SC.[SrvOrd CategoryKe y],DCR.[Ca rrierKey], DM.[ModelK ey]
,DSN.[SerialNbrKey],C.[UNI T_SERIAL_N UMBER],DUP .[UnitProc essStepKey ],DRD.[Rei ncidenceKe y],DL.[Leg Key],DD2.[ DateKey],D T2.[TimeKe y],C.[LEG_ PROCESS_ST EP_INIT_SO _DATE]
,DD3.[DateKey],DT3.[TimeKe y],C.[LEG_ PROCESS_ST EP_INIT_DA TE],DD4.[D ateKey],DT 4.[TimeKey ],C.[LEG_P ROCESS_STE P_STOP_SO_ DATE]
,DD5.[DateKey],DT5.[TimeKe y],C.[LEG_ PROCESS_ST EP_STOP_DA TE],DRS1.[ LegRespons ibleKey],D RS2.[LegRe sponsibleK ey],DLR.[L egRangeKey ],DLSLA.[L egSLAKey]
,DJF.[JustificationKey],DS LAS1.[SLAS tatusKey], DSLAS2.[SL AStatusKey ],C.[JUSTI FICATION_C OMMENTS],D D6.[DateKe y],DT6.[Ti meKey],C.[ JUSTIFICAT ION_DATE]
,C.[UNIT_FAILURES],C.[UNIT _SOLUTIONS ],C.[CUSTO MER_VIP],C .[LEG_COST ],C.[LEG_S LA_TARGET] ,C.[LEG_DI FFERENCE], C.[CrtDate ],C.[BI_VI EW_TIMESTA MP]
FROM dbtemp.dbo.tbl_PLIB_CrossR eferenced C (nolock)
INNER JOIN dbo.tbl_PLIB_dimCountry DC (NOLOCK) ON C.COUNTRY_ID = DC.CountryID
INNER JOIN dbo.tbl_PLIB_dimRegion DR (NOLOCK) ON C.REGION_ID = DR.RegionID
INNER JOIN dbo.tbl_PLIB_dimSrvOrd DS (NOLOCK) ON C.SERVICE_ORDER_ID = DS.SrvOrd
INNER JOIN dbo.tbl_PLIB_dimDate DD1 (NOLOCK) ON CAST(Convert(varchar(10),C .SERVICE_O RDER_CREAT ION,101) as datetime)= DD1.Date
INNER JOIN dbo.tbl_PLIB_dimTime DT1 (NOLOCK) ON Convert(varchar(8),C.SERVI CE_ORDER_C REATION,10 8) = DT1.Time
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLoca tion DL1 (NOLOCK) ON C.SERVICE_ORDER_OriLocID = DL1.SrvOrdLocationID
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLoca tion DL2 (NOLOCK) ON C.SERVICE_ORDER_DestLocID = DL2.SrvOrdLocationID
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLocW arranty DW1 (NOLOCK) ON c.SERVICE_ORDER_CAC_WRT_ID = DW1.WarrantyID
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLocW arranty DW2 (NOLOCK) ON c.SERVICE_ORDER_CSA_WRT_ID = DW2.WarrantyID
INNER JOIN dbo.tbl_PLIB_dimSrvOrdDeci sion DSD (NOLOCK) ON C.SERVICE_ORDER_DECISION_I D = DSD.DecisionID
INNER JOIN dbo.tbl_PLIB_dimSrvOrdStat us DSS (NOLOCK) ON c.SERVICE_ORDER_STATUS = LTRIM(RTRIM(DSS.SrvOrdStat us))
INNER JOIN dbo.tbl_PLIB_dimSrvOrdCate gory DSC (NOLOCK) ON c.SERVICE_ORDER_CATEGORY = LTRIM(RTRIM(DSC.SrvOrdCate gory))
INNER JOIN dbo.tbl_PLIB_dimCarrier DCR (NOLOCK) ON C.UNIT_CARRIER_ID = DCR.CarrierID
INNER JOIN dbo.tbl_PLIB_dimModel DM (NOLOCK) ON C.UNIT_MODEL_ID= DM.ModelID
INNER JOIN dbo.tbl_PLIB_dimSerialNbr DSN (NOLOCK) ON c.UNIT_SERIAL_NUMBER = DSN.SerialNbr
INNER JOIN dbo.tbl_PLIB_dimUnitProces sStep DUP (NOLOCK) ON c.UNIT_PROCESS_STEP = LTRIM(RTRIM(DUP.UnitProces sStep))
INNER JOIN dbo.tbl_PLIB_dimReincidenc e DRD (NOLOCK) ON c.UNIT_REINCIDENCE = LTRIM(RTRIM(DRD.Reincidenc e))
INNER JOIN dbo.tbl_PLIB_dimLeg DL (NOLOCK) ON c.LEG_ID = DL.LegID
INNER JOIN dbo.tbl_PLIB_dimDate DD2 (NOLOCK) ON CAST(Convert(varchar(10),C .LEG_PROCE SS_STEP_IN IT_SO_DATE ,101) as datetime)= DD2.Date
INNER JOIN dbo.tbl_PLIB_dimTime DT2 (NOLOCK) ON Convert(varchar(8),C.LEG_P ROCESS_STE P_INIT_SO_ DATE,108) = DT2.Time
INNER JOIN dbo.tbl_PLIB_dimDate DD3 (NOLOCK) ON CAST(Convert(varchar(10),C .LEG_PROCE SS_STEP_IN IT_DATE,10 1) as datetime)= DD3.Date
INNER JOIN dbo.tbl_PLIB_dimTime DT3 (NOLOCK) ON Convert(varchar(8),C.LEG_P ROCESS_STE P_INIT_DAT E,108) = DT3.Time
INNER JOIN dbo.tbl_PLIB_dimDate DD4 (NOLOCK) ON CAST(Convert(varchar(10),C .LEG_PROCE SS_STEP_ST OP_SO_DATE ,101) as datetime)= DD4.Date
INNER JOIN dbo.tbl_PLIB_dimTime DT4 (NOLOCK) ON Convert(varchar(8),C.LEG_P ROCESS_STE P_STOP_SO_ DATE,108) = DT4.Time
INNER JOIN dbo.tbl_PLIB_dimDate DD5 (NOLOCK) ON CAST(Convert(varchar(10),C .LEG_PROCE SS_STEP_ST OP_DATE,10 1) as datetime)= DD5.Date
INNER JOIN dbo.tbl_PLIB_dimTime DT5 (NOLOCK) ON Convert(varchar(8),C.LEG_P ROCESS_STE P_STOP_DAT E,108) = DT5.Time
INNER JOIN dbo.tbl_PLIB_dimLegRespons ible DRS1 (NOLOCK) ON C.LEG_RESPONSABLE_INIT_ID = DRS1.ResponsibleID
INNER JOIN dbo.tbl_PLIB_dimLegRespons ible DRS2 (NOLOCK) ON C.LEG_RESPONSABLE_STOP_ID = DRS2.ResponsibleID
INNER JOIN dbo.tbl_PLIB_dimLegRange DLR (NOLOCK) ON C.LEG_RANGE_ID = DLR.RangeID
INNER JOIN dbo.tbl_PLIB_dimLegSLA DLSLA (NOLOCK) ON C.LEG_SLA_ID = DLSLA.SLAID
INNER JOIN dbo.tbl_PLIB_dimJustificat ion DJF (NOLOCK) ON C.JUSTIFICATION_ID = DJF.JustificationID
INNER JOIN dbo.tbl_PLIB_dimSLAStatus DSLAS1 (NOLOCK) ON LTRIM(RTRIM(C.JUSTIFICATIO N_CLASSIF_ INIT)) = LTRIM(RTRIM(DSLAS1.SLAStat usName))
INNER JOIN dbo.tbl_PLIB_dimSLAStatus DSLAS2 (NOLOCK) ON LTRIM(RTRIM(C.JUSTIFICATIO N_CLASSIF_ FINAL)) = LTRIM(RTRIM(DSLAS2.SLAStat usName))
INNER JOIN dbo.tbl_PLIB_dimDate DD6 (NOLOCK) ON CAST(Convert(varchar(10),C .JUSTIFICA TION_DATE, 101) as datetime)= DD6.Date
INNER JOIN dbo.tbl_PLIB_dimTime DT6 (NOLOCK) ON Convert(varchar(8),C.JUSTI FICATION_D ATE,108) = DT6.Time
Just Select statement is taking about 45 seconds.
But Insert Into...Select From iis taking lot of time, more than 10 hours some times.
Your suggestion is appreciated
INSERT INTO dbtemp.dbo.tbl_PLIB_CrossR
([PrimaryKey],[BIViewID],[
,[SrvOrdLocDestinationKey]
,[SerialNbrKey],[SerialNbr
,[LegProcStepInitDateKey],
,[LegProcStepStopDateKey],
,[JustificationKey],[SLASt
,[UnitFailures],[UnitSolut
SELECT C.[PrimaryKey],C.[BI_VIEW_
,DL2.[SrvOrdLocationKey],D
,DSN.[SerialNbrKey],C.[UNI
,DD3.[DateKey],DT3.[TimeKe
,DD5.[DateKey],DT5.[TimeKe
,DJF.[JustificationKey],DS
,C.[UNIT_FAILURES],C.[UNIT
FROM dbtemp.dbo.tbl_PLIB_CrossR
INNER JOIN dbo.tbl_PLIB_dimCountry DC (NOLOCK) ON C.COUNTRY_ID = DC.CountryID
INNER JOIN dbo.tbl_PLIB_dimRegion DR (NOLOCK) ON C.REGION_ID = DR.RegionID
INNER JOIN dbo.tbl_PLIB_dimSrvOrd DS (NOLOCK) ON C.SERVICE_ORDER_ID = DS.SrvOrd
INNER JOIN dbo.tbl_PLIB_dimDate DD1 (NOLOCK) ON CAST(Convert(varchar(10),C
INNER JOIN dbo.tbl_PLIB_dimTime DT1 (NOLOCK) ON Convert(varchar(8),C.SERVI
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLoca
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLoca
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLocW
INNER JOIN dbo.tbl_PLIB_dimSrvOrdLocW
INNER JOIN dbo.tbl_PLIB_dimSrvOrdDeci
INNER JOIN dbo.tbl_PLIB_dimSrvOrdStat
INNER JOIN dbo.tbl_PLIB_dimSrvOrdCate
INNER JOIN dbo.tbl_PLIB_dimCarrier DCR (NOLOCK) ON C.UNIT_CARRIER_ID = DCR.CarrierID
INNER JOIN dbo.tbl_PLIB_dimModel DM (NOLOCK) ON C.UNIT_MODEL_ID= DM.ModelID
INNER JOIN dbo.tbl_PLIB_dimSerialNbr DSN (NOLOCK) ON c.UNIT_SERIAL_NUMBER = DSN.SerialNbr
INNER JOIN dbo.tbl_PLIB_dimUnitProces
INNER JOIN dbo.tbl_PLIB_dimReincidenc
INNER JOIN dbo.tbl_PLIB_dimLeg DL (NOLOCK) ON c.LEG_ID = DL.LegID
INNER JOIN dbo.tbl_PLIB_dimDate DD2 (NOLOCK) ON CAST(Convert(varchar(10),C
INNER JOIN dbo.tbl_PLIB_dimTime DT2 (NOLOCK) ON Convert(varchar(8),C.LEG_P
INNER JOIN dbo.tbl_PLIB_dimDate DD3 (NOLOCK) ON CAST(Convert(varchar(10),C
INNER JOIN dbo.tbl_PLIB_dimTime DT3 (NOLOCK) ON Convert(varchar(8),C.LEG_P
INNER JOIN dbo.tbl_PLIB_dimDate DD4 (NOLOCK) ON CAST(Convert(varchar(10),C
INNER JOIN dbo.tbl_PLIB_dimTime DT4 (NOLOCK) ON Convert(varchar(8),C.LEG_P
INNER JOIN dbo.tbl_PLIB_dimDate DD5 (NOLOCK) ON CAST(Convert(varchar(10),C
INNER JOIN dbo.tbl_PLIB_dimTime DT5 (NOLOCK) ON Convert(varchar(8),C.LEG_P
INNER JOIN dbo.tbl_PLIB_dimLegRespons
INNER JOIN dbo.tbl_PLIB_dimLegRespons
INNER JOIN dbo.tbl_PLIB_dimLegRange DLR (NOLOCK) ON C.LEG_RANGE_ID = DLR.RangeID
INNER JOIN dbo.tbl_PLIB_dimLegSLA DLSLA (NOLOCK) ON C.LEG_SLA_ID = DLSLA.SLAID
INNER JOIN dbo.tbl_PLIB_dimJustificat
INNER JOIN dbo.tbl_PLIB_dimSLAStatus DSLAS1 (NOLOCK) ON LTRIM(RTRIM(C.JUSTIFICATIO
INNER JOIN dbo.tbl_PLIB_dimSLAStatus DSLAS2 (NOLOCK) ON LTRIM(RTRIM(C.JUSTIFICATIO
INNER JOIN dbo.tbl_PLIB_dimDate DD6 (NOLOCK) ON CAST(Convert(varchar(10),C
INNER JOIN dbo.tbl_PLIB_dimTime DT6 (NOLOCK) ON Convert(varchar(8),C.JUSTI
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Be sure that the Dataset will have the same structure(fields) that will return the query
Will be something like this more or less
Dim tble as new dataset
DIm Qry as string="Your query"
Dim QryInsert as string=""
Dim AdTabl as new SqldataAdapter(Qry,YourCon
Tble.Clear()
AdTabl.Fill(tble)
For I as Integer=0 to Tble.rows.count() - 1
QryInst="INSERT INTO YOURTABLE(field1,field2,..
DIm Tbl2 as new datatable
Dim AdT2 as new sqldataadapter(qryInst,You
tbl2.clear()
Adt2.fill(Tbl2)
Next