当我添加mutli值参数时,我的报告运行速度非常慢。从来没有真正对Reporting Services进行任何适当的培训,所以请关注我是否遵循创建报告的正确协议以及如何提高性能。
该报告有5个数据集 - 这些数据集都不是存储过程,每个查询在SQL管理工作室2012中运行大约需要5秒钟,并返回大约4000行。
有5个参数 - 1.Date From 2.Date To 3.Country 4.Town 5.LocalAuthority
我的参数在每个查询中设置,如下所示
where Date between @Date From and @Date To
and Country in (@Country)
and Town in (@Town)
and LocalAuthority in (@LocalAuthority)
该报告在没有参数的情况下运行良好,并且仅适用于国家/地区参数,但是当我在其他地方添加了事情真正开始放缓的情况时,它就会超时。
报告本身只显示了一些表格,其中添加了几个过滤器
我想知道是否更适合尝试创建一个查询而不是拥有大量日期集?无论如何,任何帮助都将非常感激,希望我已经包含了足够的信息。
答案 0 :(得分:0)
如果没有看到您正在做的事情,却无法真正评论您的数据集/ SQL性能,但可以帮助您处理多值参数。
理想情况下,您应该使用split function
将多值参数值转换为多个值,以便您可以使用IN
运算符。如果您没有任何拆分功能,请尝试将多值参数转换为临时表,然后将JOIN
临时表转换为主表。这将使生活变得轻松。
例如,如果您有以下变量:
DECLARE @Countries VARCHAR(MAX) = 'Australia,France,New Zealand,United Kingdom'
由于:
SELECT @Countries AS Countries
作为
Countries
----------
Australia,France,New Zealand,United Kingdom
以下SQL
:
DECLARE @Countries VARCHAR(MAX) = 'Australia,France,New Zealand,United Kingdom'
CREATE TABLE #Countries (Country VARCHAR(30));
DECLARE @Insert VARCHAR(MAX) = 'INSERT INTO #Countries VALUES ('''+REPLACE(@Countries,',','''),(''')+''');';
EXEC (@Insert);
将mutli-valued @Countries
变量转换为临时表。
所得:
SELECT Country FROM #Countries
作为
Country
--------
Australia
France
New Zealand
United Kingdom
现在,您可以使用主表JOIN
此临时表。试试这个,如果你能看到一些不同,请告诉我们。