【发布时间】:2015-05-06 03:29:58
【问题描述】:
这与“快速查询在 SSRS 中运行缓慢”基本上是相同的问题,但是我看不到那里对我有用。
上下文: 创建了一个报表生成器数据集用于我的报表,查询是:
SELECT DISTINCT A.A
, A.B
, A.C
, A.A + ', (' + A.B + '), : ' + CAST(A.C AS VARCHAR) D
FROM Table1 X
INNER JOIN TableA A ON X.Key = A.Key
WHERE (X.Col1 IN (@Param1))
AND (X.Col2 IN (@Param2))
UNION
SELECT '(All)', '(Select to apply all)', 0, '<APPLY ALL>'
ORDER BY C, A
OPTION (OPTIMIZE FOR UNKNOWN)
我有 3 个多值参数。第一个 (@Param1) 和第二个 (@Param2) 列表加载正常,第二个不依赖于第一个。从上面的查询中可以看出,使用上述数据集的第三个列表依赖于 1 和 2。
我添加了 OPTION (OPTIMIZE FOR UNKNOWN) 子句以尝试加快速度,但无济于事。我什至不知道如何声明一个多值参数,所以这是我现阶段尝试的唯一选择。
在我从第二个下拉列表/参数中选择完值并移至第三个参数后,报告加载图标的东西会搅动大约 5 秒钟,然后它就会停止,之后什么也没有发生,我再也无法从第三个下拉列表中进行选择除非我准备等到它完成,但这似乎是大约 20 分钟,所以过了一会儿我就杀死了网页并重新开始。当我在一秒钟内运行 SQL Server 中的报告查询时,当我通过 Report Builder IDE 中的报告运行时,与 20 分钟相比,它可以正常工作,延迟几秒钟,但通过 SharePoint/SSRS 运行需要 20 分钟。
有没有人建议尝试一下?
【问题讨论】:
-
您通常希望从该数据集中获得多少行?还有什么特殊原因您使用
UNION而不是UNION ALL? -
行数少于 40,000。我现在使用 UNION ALL 没有区别。
-
我还更改了数据集中的查询以使用多语句表值函数代替,希望可以创建一个查询计划来尝试优化,但在报告中仍然需要不到一秒钟的时间builder IDE,但通过 SharePoint 网站需要很长时间
标签: reporting-services ssrs-2012