【发布时间】:2019-02-14 08:21:41
【问题描述】:
我有以下查询:
SELECT
COUNT(DISTINCT CASE WHEN ResultsA.Followup = 1 THEN ResultsA.Auditors END) as ColumnResults,
COUNT(DISTINCT CASE WHEN ResultsA.UnannInspectionYN = 1 THEN ResultsA.Auditors END) ColumnResults2,
COUNT(DISTINCT CASE WHEN ResultsA.UnannInspectionYN = 0 AND ResultsA.Followup = 0 THEN ResultsA.Auditors END) ColumnResults3,
COUNT(DISTINCT ResultsA.Auditors) ColumnResults4
FROM
ResultsA
INNER JOIN TableB ON TableB.Auditors = ResultsA.Auditors
INNER JOIN TableC ON TableC.TableCColumn = ResultsA.TableCColumn AND Country IN (@Country)
WHERE
exists(Select SupData
from IMP_SUP_DATA
where impID = @id and TableC.TableCColumn = SupData)
AND
TableB.ColumnA in ( 'Accepted and reviewed' , 'Accepted, but not reviewed', 'Submitted', 'Accepted (provisional)')
AND
TableB.Date BETWEEN @FromDate AND @ToDate
AND
ISNULL(TableC.Datainfo,'No Data') IN (@Datainfo)
查询从相当多的数据中提取,但是当我在 SSMS 中运行它时,它非常快。我可以回到几年,查询仍然最多在 10 秒内返回。 但是,当我将查询作为报告运行时,可能需要几分钟甚至在某些结果中超时。
我怎样才能以最好的方式解决这个问题?我希望从中吸取教训,以防止将来发生这种情况。环境是sql server 2014。
【问题讨论】:
-
我用它作为原始参考,但不幸的是(可能是我)我在那里找不到结果。
-
使用此 sql 在 SSRS 中创建数据集:
DBCC USEROPTIONS,并将输出与在 SSMS 中执行的相同命令进行比较。可能在 SSMS 中启用了某些 SET 选项,而在 SSRS 连接中丢失了 -
设置都是一样的,我刚查过..你能帮我优化一下我的查询吗?
-
能否告诉我们您的问题是否已解决?
标签: sql-server tsql reporting-services