私は約1秒間私に結果を与える単純な選択ステートメントを持っています。しかし、カラム'Sent to UW on'
を生成するsub-select文を追加すると、パフォーマンスが大幅に低下します。 私は理由がまさにこの文であると思う:サブSELECT文を連結すると、クエリのパフォーマンスが大幅に低下します。 SQL 2012
OR L.Action = CONCAT('Conrol #',Q.ControlNo, '. Change Quote Status Reason from ''None'' to ''Under Review''')
このselect
文を書き換えるための他の方法ですか?
SELECT
ControlNo ,
PolicyNumber ,
l.LineName ,
InsuredPolicyName ,
DisplayStatus ,
U.UserName as Underwriter ,
u.EmailAddress as 'Underwriter Email' ,
rtrim(ltrim(PC.[FName])) + ' ' + rtrim(ltrim(PC.[LName])) as Broker ,
PL.Name ,
q.DateBound ,
q.EffectiveDate ,
(
SELECT TOP 1 L.ActionDate
FROM tblLog L
WHERE L.IndentifierGuid = q.QuoteGUID
AND L.Action = 'Reason for Quote status change: Under Review'
--The line below slows down the performance
OR L.Action = CONCAT('Conrol #',Q.ControlNo, '. Change Quote Status Reason from ''None'' to ''Under Review''')
ORDER BY L.ActionDate asc
) as 'Sent to UW on'
FROM tblQuotes Q WITH (nolock)
JOIN tblUsers U WITH (nolock) ON underwriteruserguid = u.userGUID
LEFT JOIN lstlines L WITH (nolock) ON L.LineGUID = Q.lineguid
LEFT JOIN lstQuoteStatusReasons QSR WITH (nolock) ON QSR.ID = Q.QuoteStatusReasonID
LEFT JOIN [MEJAMES].[dbo].[tblProducerContacts] PC WITH (nolock) ON pc.ProducerContactGUID = q.ProducerContactGuid
LEFT JOIN MEJAMES.DBO.tblProducerLocations PL WITH (nolock) ON PC.ProducerLocationGUID = PL.ProducerLocationGUID
LEFT JOIN [MEJAMES].[dbo].[tblProducerContacts] PC_Asst WITH (nolock) ON PC_Asst.ProducerContactGUID = q.SecProducerContactGuid
WHERE q.lineGUID in('D4983D4A-1D12-461D-8837-6092DC74325B', 'CF144437-F128-4B77-AC19-877247347D02' , 'E05E7F4A-07C4-4981-BD13-2461D4EE4BF3')
/* EQ and Wind and Terrorism LOBs */
AND q.OriginalQuoteGUID is null
AND Q.QuoteStatusID = 3
AND Q.EffectiveDate > '5-1-2017'
ORDER BY q.ControlNo
私の推定実行プランの作品:
括弧がありませんか? 'OR'述語は前の' L.IndentifierGuid = q.QuoteGUID'とは独立しています。 –
あなたはまた、2つの "L"エイリアスを持っています...サブセレクトに1つと、それ以外にLEFT JOINとして1つ...最高で混乱します。しかし基本的には、その連結では索引を使用できないため、クラスター化された主キーに移動してテストを実行する必要があります。そして、ええ、括弧がなくなっているようです(ANDの後に開き、ORDERの前に閉じてください)。 – pmbAustin
@Dan Guzmanあなたは正しいです。括弧がその仕事をしました。どうもありがとうございました! – Oleg