как оптимизировать запрос вложенного цикла - PullRequest
0 голосов
/ 11 июня 2018

У меня есть cte, и я использую вложенные циклические соединения для извлечения данных из 3 разных таблиц.Производительность очень низкая, и через некоторое время я получаю сообщение об ошибке тайм-аута.Я проверил план запроса и обнаружил, что проблема связана с объединениями вложенных циклов.

Как оптимизировать приведенный ниже запрос?Любая помощь / предложение будет высоко ценится.

with DCT as(
    select distinct
           p.PolicyReference as PolicyNumber,
           Year(p.PolicyEffectiveDate) as PolicyYear,
           reverse(substring(reverse(p.PolicyReference) , 1 , 2 )) as 
           PolicySequence,
           p.PolicyEffectiveDate as InceptionDate,
           p.PolicyExpirationDate as ExpirationDate,
           p.AggregateLimitAmt_Orginal as AggregateLimit,
           p.AttachmentPointAmt_Orginal as AttachmentPoint,                   
           ch.DangerSignalDescription as DangerDescription,
           ct.TransactiomAmountOriginal,
           ch.PrimaryAllegation,
           p.LOBCode as GLLOBCode, 
           p.BusinessUnit as GLLOBName,
           p.ProducingOfficeCode as Office, 
           Null as CatCode,
           p.PolicyBasisCode as PolicyTrigger,
           Getdate() As ProcessDate,
    From [vwPolicy] p 
        Inner  Join [vwClaimHeader] ch  ON p.PolicyReference = ch.PolicyReference 
        Inner  Join [vwClaimTransactions] ct ON ch.ClaimSuffix = ct.ClaimSuffix)
select * from DCT;

Я прикрепил выполнение плана запроса, и, как вы можете видеть, вложенные циклы занимают 82%.Как мне это преодолеть.Это довольно простой запрос.enter image description here

...