早上好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
我最终可能会把它写成一个联盟,但我真的想知道为什么这么慢。
任何帮助都将大大减少,谢谢你的时间。
波比
更新
我发现将内部查询保存到两个临时表中然后应用完整的外部联接非常快。
我不知道为什么这会大大提高查询速度。