PRR.DB (8/22/2013)
Hi All,I am migrating 35 million data to another new table(EVALUATION_CRITERIA) using simple joins, But it is taking to execute around 24 hrs and system ram=16 GB,
Below are the insert query and attached Execution plan
Can any one suggest , is there any best ways
can i get Any Time difference If run same code in SSIS Package ?
Records count in user tables
EVALUATION_DETAIL33240682
EVALUATION1297899
EVALFORM 338
EVALFORM_CRITERIA8619
EVALFORM_CRITERIA_DETAIL 34630
--Script
Declare @EvaluationId Int, @EvalformId Int
Declare CursorData Cursor For
Select Evaluation_Id, Evalform_Id From Evaluation
Open CursorData
Fetch Next From CursorData Into @EvaluationId, @EvalformId
While @@Fetch_Status = 0
Begin
Insert EVALUATION_CRITERIA (EVALUATION_ID, EVALFORM_CRITERIA_ID, TITLE_NAME, BASE_CRITERIA_ID, EVALFORM_CRITERIA_DETAIL_ID, CHILD_EXIST, PRIORITY_ORDER, WEIGHTAGE, ANSWER_TYPE, STATUS, CREATE_BY, CREATE_DATE, LEVEL, SCORE)
select e.EVALUATION_ID, efcd.EVALFORM_CRITERIA_ID, efc.TITLE_NAME, efc.BASE_CRITERIA_ID,
efcd.EVALFORM_CRITERIA_DETAIL_ID, efc.CHILD_EXIST, efc.PRIORITY_ORDER, efc.WEIGHTAGE, NULL, --efc.ANSWER_TYPE,
--'A', 1, GETDATE(), efc.LEVEL, efcd.SCORE
'A', 1, GETDATE(), efc.LEVEL, (select MAX(score) from EVALFORM_CRITERIA_DETAIL where EVALFORM_CRITERIA_ID = efcd.EVALFORM_CRITERIA_ID and STATUS = 'A' and OMIT_FROM_SCORE = 'N') score
from EVALFORM ef
inner join EVALFORM_CRITERIA efc on ef.EVALFORM_ID = efc.EVALFORM_ID
left join EVALFORM_CRITERIA_DETAIL efcd on efc.EVALFORM_CRITERIA_ID = efcd.EVALFORM_CRITERIA_ID
left join EVALUATION_DETAIL ed on efcd.EVALFORM_CRITERIA_DETAIL_ID = ed.EVALFORM_CRITERIA_DETAIL_ID
left join EVALUATION e on ed.EVALUATION_ID = e.EVALUATION_ID
where e.EVALUATION_ID=@EvaluationId and efc.STATUS = 'A'
Union
select @EvaluationId, efc.EVALFORM_CRITERIA_ID, efc.TITLE_NAME, efc.BASE_CRITERIA_ID,
0, efc.CHILD_EXIST, efc.PRIORITY_ORDER, efc.WEIGHTAGE, NULL, --efc.ANSWER_TYPE,
'A', 1, GETDATE(), efc.LEVEL, NULL --efcd.SCORE
from EVALFORM ef
inner join EVALFORM_CRITERIA efc on ef.EVALFORM_ID = efc.EVALFORM_ID
left join EVALFORM_CRITERIA_DETAIL efcd on efc.EVALFORM_CRITERIA_ID = efcd.EVALFORM_CRITERIA_ID
where efc.CHILD_EXIST = 'Y' and efc.STATUS = 'A' and ef.EVALFORM_ID = @EvalformId
--Select @EvaluationId, @EvalformId
Fetch Next From CursorData Into @EvaluationId, @EvalformId
End
Close CursorData
Deallocate CursorData
--Attached Execution plan
Are you running this as a query from SSMS from your local machine?