Я работаю на SQL сервере 2012. Я сталкиваюсь с проблемой при выполнении запроса ниже. Требуется 9 минут, чтобы вернуть только 900 строк.
SELECT fmat.Value as PLID,c.CodeTypeId,
COUNT(DISTINCT tr.PartID) [#partsHasCodes]
into #partsHasCodes
FROM Parts.TradeCodes tr WITH(NOLOCK)
INNER JOIN Parts.Nop_Part pt WITH(NOLOCK) ON pt.PartID = tr.PartID
INNER JOIN Parts.Nop_PartsFamilyAttribute fmat WITH(NOLOCK) ON fmat.PartFamilyID=pt.PartsFamilyID AND fmat.[Key]=20281007
inner join #TempPlAndCodeType c on (c.CodeTypeId=tr.CodeTypeID)
GROUP BY fmat.Value,c.CodeTypeId
Что я пробовал:
это выполнение plan:
https://www.brentozar.com/pastetheplan/?id=HJXDEp_bv
Добавить индекс кластера в #TempPlAndCodeType:
create clustered index idx on #TempPlAndCodeType (CodeTypeId)
, но по-прежнему занимает слишком много времени
, так что я делаю, чтобы улучшить запрос, по крайней мере, минимизировать время ?