使用完全外连接缓慢运行查询

时间:2014-03-13 10:02:40

标签: sql-server tsql

早上好stackoverflow。

我的查询运行速度很慢(大约需要25秒才能返回50行)。 基本上我在一个更大的查询中有2个内部查询,2个内部查询分别快速运行,但是当我用完全外连接加入它们时,它变得非常慢。

这是我的代码:

DECLARE @StartDate DATETIME, @EndDate DATETIME

SET @StartDate = '20131106'
SET @EndDate = '20131107';

WITH al
     AS (SELECT at.Date AS 'Note Date',
                at.ApplicationID,
                at.Comment,
                at.UserID
         FROM   ApplicationTimeline AS at
         WHERE  ( at.[Date] BETWEEN @StartDate AND @EndDate + '23:59:59' )
                AND ( at.EventID = 1 ) -- UW notes
                AND ( at.Title = 'Allocation Note' )),
     cm
     AS (SELECT cm.IdentityID,
                cm.ApplicationID,
                cm.ReminderFeedback,
                cm.timestamp,
                (SELECT dbo.udf_StripHTML(cm.Comments)) AS 'Comments'
         FROM   tblCaseManagement AS cm
         WHERE  cm.timestamp BETWEEN @StartDate AND @EndDate)
SELECT a.ApplicationID,
       a.LogDate,
       cmu.ShortName,
       cm.ReminderFeedback,
       cm.timestamp
FROM   al
       FULL OUTER JOIN cm
         ON cm.ApplicationID = al.ApplicationID
       INNER JOIN tblApplication AS a
         ON a.ApplicationID = ISNULL(al.ApplicationID, cm.ApplicationID)
       INNER JOIN tblUser AS cmu
         ON cmu.IdentityID = cm.IdentityID 

Execution plan
我最终可能会把它写成一个联盟,但我真的想知道为什么这么慢。 任何帮助都将大大减少,谢谢你的时间。 波比

更新

我发现将内部查询保存到两个临时表中然后应用完整的外部联接非常快。

我不知道为什么这会大大提高查询速度。

0 个答案:

没有答案