Когда выполняется запрос только для одной части, это занимает слишком много времени только для одной части, почему ?
Я работаю над запросом sql server 2012 и сталкиваюсь с проблемой : при выполнении запроса возвращаю 10 строк только для одной части
это займет 50 секунд я пытаюсь запустить его в другое время может быть ПК имеет большую нагрузку
но это займет столько же времени 50 секунд, чтобы вернуть 10 строк только для одной части .
У меня может быть 10000 деталей и записей может быть 15 миллионов так что мне нужно повысить производительность чтобы быть лучшим
Итак, что я делаю, чтобы запрос выполнялся за короткое время
это мой вопрос
Вставьте План - Brent Ozar Unlimited®[^]
EDIT: запрос OPs скопирован из ссылки выше
Select distinct top 100 [Is Match]= case when isnull(NAVO.Name ,'') = DUFP.Value or (isnull(NAVO.Name ,'') = N'N/A' And DUFP.Value =N'-') then cast(1 as bit) else cast(0 as bit) end ,DDD.ColumnName [Flat Feature],DUFP.FeatureName [Sourcing Feature],NAVO.Name [Flat Value],DUFP.Value [Sourcing value] ,C.CompanyName,p.PartNumber,dd.DataDefinition [PL] , isnull(AVOS.Name,'') ApprovalStatus ,isnull(rl.local_url,'') [local url],isnull( l.local_url,'') [DataSheet] ,isnull(NAVOUrl.Name ,'') [Data Sheet Type] ,isnull(NV.DKValue,'') [DK Value],FM.StatusId,FM.SplitFlag,FM.DkFeatureId,FM.separator,FM.separatororder --test ,NPP.PartID , DUFP.ZpartID,starformat,Endformat into #finalTable from #getDeliveryConfiguration FM with(nolock) join [Excel_DK].dbo.Excel_DK DUFP with(nolock) on DUFP.FeatureName =FM.DK_Feature join [Z2DataCore].[Parts].[Nop_Part] p with(nolock) on DUFP.ZpartID =p.PartID join [Z2DataCompanyManagement].[CompanyManagers].[Company] C with(nolock) on p.CompanyID = C.CompanyID left join [Z2DataCore].[parts].[Nop_PartParamtric] NPP with(nolock) on NPP.PartID = DUFP.ZpartID left join [Z2DataCore].[dbo].[Core_DataDefinitionDetails] DDD with(nolock) on FM.Z_FeatureID=DDD.ColumnNumber join [Z2DataCore].[Parts].[Nop_PartParamtricAttribute] NPPA with(nolock) on NPP.[PartParamtricID] =NPPA. [PartParamtricID] and DDD.ColumnNumber= NPPA.[Key] left join [Z2DataCore].[dbo].[Nop_AcceptedValuesOption] NAVO with(nolock) on NPPA.Value =NAVO. AcceptedValuesOptionID left join [Z2DataCore].[dbo].Nop_AcceptedValuesOption AVOS with(nolock) on AVOs.AcceptedValuesOptionID= NPPA.ApprovalID/*[ApprovalStatus]*/ and AVOS.AcceptedValuesID=2941 LEFT JOIN Z2URLSystem.zsrc.Local_URL l with(nolock) ON l.rec_id = NPPA.SourceURLID left JOIN [Z2DataCore].Parts.Nop_PartsFamilyAttribute fa with(nolock) ON fa.PartFamilyID = p.PartsFamilyID AND fa.[Key] = 20281007 left JOIN [Z2DataCore].dbo.Core_DataDefinition dd with(nolock) ON dd.ZproductCategoryID = fa.Value LEFT JOIN [Z2DataCore].Parts.Nop_PartsFamilyAttribute Nfa with(nolock) ON Nfa.PartFamilyID = p.PartsFamilyID AND Nfa.[Key]=1400040081 LEFT JOIN Z2URLSystem.zsrc.Revision r with(nolock) ON r.rec_id = Nfa.Value LEFT JOIN Z2URLSystem.zsrc.Local_URL rl with(nolock) ON rl.rec_id = r.local_id Left join [Z2DataCore].[dbo].[Nop_AcceptedValuesOption] NAVOUrl with(nolock) on NPPA.SourceURLType =NAVOUrl. AcceptedValuesOptionID left join [Z2DataCore].dbo.Core_DataDefinitiondeTails CDD with(nolock) on CDD.ColumnNumber=NPPA.[Key] and CDD.FeatureType in(2044,2043) left outer join [Z2DataCore].dbo.Core_DataDefinition CD with(nolock) on CD.ID=CDD.DataDefinitionID left join [Z2DataCore].[dbo].[NormalizationValue] NV with(nolock) on NAVO.AcceptedValuesOptionID=NV.AcceptedValuesOptionId and NV.ProductID=CD.ZNumber where C.CompanyName=@companyName And DUFP.PartNumber=@partNumber order by DUFP.FeatureName
Что я уже пробовал:
CREATE NONCLUSTERED INDEX index1 ON [dbo].[Excel_DK] ([PartNumber]) INCLUDE ([ZPartId],[FeatureName],[Value])
CHill60
Я думаю, что вы серьезно зашли слишком далеко с нормализацией, если вам нужно объединить 19 таблиц, чтобы получить свои данные!
Я не готов пытаться распутать все это без некоторой помощи с вашей стороны - например, примеры данных для каждой из таблиц и некоторые ожидаемые результаты
ahmed_sa
Итак, что я делаю, чтобы повысить производительность этого длинного запроса
CHill60
Я этого не заметил - Если вы используете ссылку "ответить" на сообщение, то участник сразу же получает уведомление.
Richard MacCutchan
Восемнадцать присоединений! Неудивительно, что это занимает много времени. Попробуйте сделать это вручную, когда все файлы находятся в разных ящиках картотечного шкафа.