i am new in SQL and this is first project i am trying to do, so
i have some issue with query, it was run in 8 min and i make a unique clustered then it helps to run in 2 to 3 min, while i was searching i found execution plan as i upload it takes too much time, how can i reduce it please
select
tblStockmb5b.[Material] ,
[Plnt] ,
sum(distinct [opening stock]) as [opening stockM],
sum(distinct [closing stock]) as [closing stockM],
sum(distinct tblCOGSPrice.unitvalue* [Opening Stock]) as TotalOpeningStockCOGS ,
sum(distinct tblCOGSPrice.unitvalue * [Closing Stock]) as TotalClosingStockCOGS ,
(sum(distinct tblCOGSPrice.unitvalue* [Opening Stock]) + sum(distinct tblCOGSPrice.unitvalue * [Closing Stock]))/2 as AverageStockPerMonth,
sum(tblConsumtion261.[Quantity]) as TotalMonthDemand,
sum(tblConsumtion261.[Quantity] * tblCOGSPrice.unitvalue) as TotalannualDemand,
( (sum(distinct tblCOGSPrice.unitvalue* [Opening Stock]) + sum(distinct tblCOGSPrice.unitvalue * [Closing Stock]))/2 )/ count(distinct [EomonthMB5b]) as AverageInventoryValue,
iif(sum(tblConsumtion261.[Quantity]* tblCOGSPrice.unitvalue) = 0 , Null,sum(tblConsumtion261.[Quantity]* tblCOGSPrice.unitvalue) ) / datediff(day,'2020-01-01',GETDATE()) as AverageDailyCOGS ,
iif( sum(tblConsumtion261.[Quantity] * tblCOGSPrice.unitvalue) = 0 , Null , sum(tblConsumtion261.[Quantity] * tblCOGSPrice.unitvalue) ) /
(iif(( (sum(distinct tblCOGSPrice.unitvalue* [Opening Stock]) + sum(distinct tblCOGSPrice.unitvalue * [Closing Stock]))/2 )= 0 , Null ,
( (sum(distinct tblCOGSPrice.unitvalue* [Opening Stock]) + sum(distinct tblCOGSPrice.unitvalue * [Closing Stock]))/2 ) )/ count(distinct [EomonthMB5b]) )as [Inv.Turnover Ratio] ,
(( (sum(distinct tblCOGSPrice.unitvalue* [Opening Stock]) + sum(distinct tblCOGSPrice.unitvalue * [Closing Stock]))/2 )/ count(distinct [EomonthMB5b]) )/
(iif(sum(tblConsumtion261.[Quantity]* tblCOGSPrice.unitvalue) = 0 , Null,sum(tblConsumtion261.[Quantity]* tblCOGSPrice.unitvalue) ) / datediff(day,'2020-01-01',GETDATE())) as IDS
from tblStockmb5b
left join tblCOGSPrice
on tblStockmb5b.[Material] = tblCOGSPrice.[Material] and tblStockmb5b.[plnt] = tblCOGSPrice.[Plant] and tblStockmb5b.[EomonthMB5b] = tblCOGSPrice.[EomonthC9]
left join tblConsumtion261
on tblStockmb5b.[Material] = tblConsumtion261.[Material] and tblStockmb5b.[plnt] = tblConsumtion261.[Plant] and tblStockmb5b.[EomonthMB5b] = tblConsumtion261.[Eomonth261]
group by tblStockmb5b.[Material] , [Plnt]
order by tblStockmb5b.[Material] , [Plnt]
thank you i figer out the solution based on what you said about distinct and re-query that to CTE's now it Runs in 4 sec