SSRS "not in" 需要很长时间才能达到 运行

SSRS "not in" takes an extremely time if at all to run

SSRS - SQL 2008 SSRS 版本 3.0。 需要 运行 一个 NOT IN,但需要很长时间才能 运行

看过 "Stacia" post 关于使用过滤器的内容,但我似乎不太了解。 http://blog.datainspirations.com/2011/01/20/working-with-reporting-services-filters-part-4-creating-a-not-in-filter/

在报告的 Tablix 中,我为过滤器添加了以下内容:

=Iif(InStr(Join(Parameters!FilterList.Value,","),Fields!Status.Value)=0,True,False)

我想做的是显示未取消的记录。

甚至做一个简单的过滤器:

似乎还需要很长时间。

我们可以有以下 Status 条件:

如果我采取相反的方式并在 SSRS 中查找所有已取消(过滤)的工单,结果很快就会返回。

更新:如果我为报告的查询放入过滤器:

并且只需将“已取消”排除在外,就可以了。 谢谢

您的过滤器是针对组、矩阵还是数据集?它可能 运行 在数据集上更快,因为它只会检查一次。问题取决于您有多少记录 - 必须对每一行进行检查。

您可以尝试执行 IN 语句,看看它是否更快。创建一个具有 Status 值但不包括所选值的新数据集。

SELECT * FROM (
    SELECT 'Cancelled' AS STATUS_TYPE 
    UNION 
    SELECT 'Resolved' 
    UNION 
    SELECT 'Open' 
    UNION 
    SELECT 'Closed' ) AS X 
WHERE STATUS_TYPE NOT IN (@StatusType)

然后根据数据集创建另一个参数,并将可用值和默认值作为 Status_Type 列。您可以在它运行时将其隐藏,这样如果它运行得更快,用户就不会看到它。

不确定这是否是导致报告运行缓慢的根本原因。您可以尝试将此规则添加到库中然后将其包含在报告中吗? 您可以参考

How to deploy custom assembly in SSRS in Production Environment

http://sqlmag.com/sql-server-reporting-services/custom-programming-enhance-ssrs-reports