Когда запрос join с #tempplandcodetype становится очень медленным, так как же решить проблему низкой производительности ?
Я работаю на SQL server 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
без добавления этого утверждения ниже
(c.CodeTypeId=tr.CodeTypeID)
запрос занимает 3 минуты для отображения 900 строк и после добавления
(c.CodeTypeId=tr.CodeTypeID)
это займет 9 минут
при соединении с временной таблицей #TempPlAndCodeType время становится 9 минут.
Что я уже пробовал:
this is execution plan so what I do https://www.brentozar.com/pastetheplan/?id=HJXDEp_bv
что я делаю, как показано ниже :
create clustered index idx on #TempPlAndCodeType (CodeTypeId)
но все равно это займет слишком много времени
0x01AA
В случае MS SQL: имейте в виду, что MS SQL автоматически не добавляет индекс для внешних ключей ;)
ahmed_sa
так что, пожалуйста, что я делаю
Gerry Schmitz
Упростите или продолжайте упорно трудиться.