Hi all,Trying to optimise the below query, I believe it's do with the estimated rows on the unpivot using Supratimes this seems to be the only sticking point.The query below is an example replicating what I'm trying to do in live, it takes around 2 seconds to run on my pc.TIA[code="sql"]Create --drop --alter Table #Actuals ( Period1 FLOAT , Period2 FLOAT , Period3 FLOAT , Period4 FLOAT , Period5 FLOAT , Period6 FLOAT , Period7 FLOAT , Period8 FLOAT , Period9 FLOAT , Period10 FLOAT , Period11 FLOAT , Period12 FLOAT );Insert #Actuals ( Period1 , Period2 , Period3 , Period4 , Period5 , Period6 , Period7 , Period8 , Period9 , Period10 , Period11 , Period12 )Values ( 0.01 -- Period1 - float , 0.0 -- Period2 - float , 0.0 -- Period3 - float , 0.0 -- Period4 - float , 0.0 -- Period5 - float , 0.0 -- Period6 - float , 0.0 -- Period7 - float , 0.0 -- Period8 - float , 0.0 -- Period9 - float , 0.0 -- Period10 - float , 0.0 -- Period11 - float , 0.0 -- Period12 - float );Declare @1 INT = 1;While @1 < 7000 Begin Insert #Actuals ( Period1 , Period2 , Period3 , Period4 , Period5 , Period6 , Period7 , Period8 , Period9 , Period10 , Period11 , Period12 ) Select Period1 , Period2 + ( @1 / 10 ) , Period3 + ( @1 / 10 ) , Period4 + ( @1 / 100 ) , Period5 + ( @1 / 1000 ) , Period6 + ( @1 / 10 ) , Period7 + ( @1 / 10 ) , Period8 + ( @1 / 10 ) , Period9 + ( @1 / 10 ) , Period10 + ( @1 / 10 ) , Period11 + ( @1 / 10 ) , Period12 + ( @1 / 10 ) From #Actuals; Select @1 = COUNT(1) From #Actuals; End;Create --drop --alterTable #MonthlyAmounts ( BudgetPeriod VARCHAR(15) , [Movement] FLOAT );Insert #MonthlyAmounts ( Movement , BudgetPeriod ) Select Movement = Actual , BudgetPeriod From #Actuals Unpivot ( Actual For BudgetPeriod In ( Period1, Period2, Period3, Period4, Period5, Period6, Period7, Period8, Period9, Period10, Period11, Period12 ) ) As ASMT;Select *From #MonthlyAmounts;Drop Table #Actuals;Drop Table #MonthlyAmounts;[/code]
↧