繁体   English   中英

带有嵌套选择的慢速TSQL查询

[英]Slow TSQL query with nested selects

我已经写了一个查询,但是在我们的实时环境中运行似乎很慢。 该查询包含嵌套的select语句,我认为这会降低执行速度。

有没有人对我如何重新编写查询以提高执行速度有任何提示。

DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME

SET @StartDate = '20140101'
SET @EndDate = '20140101'

SELECT a.applicationid,
       a.ourreference,
       (SELECT MAX(e.CreateDateTime) FROM tblEmail AS e WHERE( e.ApplicationID = a.ApplicationID) AND (ISNULL(e.StandardEmailID,0) <> 3)) AS 'LastEmail',
       (SELECT MAX(l.CreateDateTime) FROM tblLetter AS l WHERE l.ApplicationID = a.ApplicationID AND l.ExternalDocumentTypeID IS NULL) AS 'LastInternalLetter',
       (SELECT MAX(l.CreateDateTime) FROM tblLetter AS l WHERE l.ApplicationID = a.ApplicationID AND l.ExternalDocumentTypeID IS NOT NULL) AS 'LastExternalLetter'
INTO #Temp
FROM tblapplication AS a
WHERE (a.LogDate BETWEEN @StartDate AND @EndDate + '23:59:59')
AND (a.BusinessSourceID NOT IN (11, 16))
AND (a.ApplicationStatusID = 100)

SELECT *
FROM #Temp AS tem
WHERE ((LastEmail < LastExternalLetter) AND (LastInternalLetter < LastExternalLetter))

欢呼大家

编辑-抱歉,我应该说查询的目的是什么。 我正在尝试查看我们的客户是否给我们发送了一封信,而我们没有通过信件/电子邮件回复他们

select *
from
(
    Select a.applicationId, a.ourreference,
           max(e.CreateDateTime) LastEmail,
           max(li.CreateDateTime) LastInternalLetter,
           max(le.CreateDateTime) LastExternalLetter
    from tblApplication a
    left outer join tblEmail e on e.ApplicationID = a.ApplicationID 
    left outer join tblLetter li on li.ApplicationId = a.ApplicationId
    left outer join tblLetter le on le.ApplicationId = a.ApplicationId
    WHERE (a.LogDate BETWEEN @StartDate AND @EndDate + '23:59:59')
    AND (a.BusinessSourceID NOT IN (11, 16))
    AND (a.ApplicationStatusID = 100)
    and (e.StandardEmailID <> 3 or e.StandardEmailId is null)
    group by a.ApplicationId, a.OurReference
)x
WHERE ((LastEmail < LastExternalLetter) AND (LastInternalLetter < LastExternalLetter))

这摆脱了临时表。 请记住,使用SQL的任何地方只要有一个表,就可以替换查询(无论如何仍为“选择”)。 这应该使其效率更高一些,但是您希望查看查询计划并查看阻止它的原因。

干杯-

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM