在 sql 报告服务中使用多值参数时,使用数据集本身的过滤器实现列表过滤器是否更合适,数据区域控制或更改驱动数据集的实际查询?
SSRS 将支持任何场景,所以我问,除了为什么应该在一个级别而不是另一个级别上完成这一显而易见的事情之外,还有其他原因吗?
对我来说,修改查询本身并要求 RDBMS 处理过滤将是最有效的,但对于 SSRS 数据处理扩展如何处理这种情况,我可能遗漏了一些东西?
在 sql 报告服务中使用多值参数时,使用数据集本身的过滤器实现列表过滤器是否更合适,数据区域控制或更改驱动数据集的实际查询?
SSRS 将支持任何场景,所以我问,除了为什么应该在一个级别而不是另一个级别上完成这一显而易见的事情之外,还有其他原因吗?
对我来说,修改查询本身并要求 RDBMS 处理过滤将是最有效的,但对于 SSRS 数据处理扩展如何处理这种情况,我可能遗漏了一些东西?
你是对的。方法是将参数传递给数据库引擎。
Reporting Services 只能用于呈现内容。您需要传回客户端 Web 浏览器的数据越少,报告的呈现速度就越快。
您可能会发现我对有关使用多值参数的类似帖子的回答。
在 Reporting Services 中为单个参数传递多个值
希望这会有所帮助,但请随时提出您可能有的任何其他问题。
干杯,约翰
使用表值 UDF 是一种很好的方法,但仍然存在一个问题 - 如果在许多查询位置调用此函数,甚至在内部选择内部,可能会出现性能问题。您可以使用表变量(或临时表 ether)解决此问题:
DECLARE @Param (Value INT)
INSERT INTO @Param (Value)
SELECT Param FROM dbo.fn_MVParam(@sParameterString,',')
...
where someColumn IN(SELECT Value FROM @Param)
所以函数只会被调用一次。
另外,如果您不使用存储过程,而是使用嵌入式 SQL 查询,则可以将 MVP 放入查询中: ... where someColumn IN(@Param) ...
使用 RDBMS 进行主过滤
SSRS 为数据驱动显示和/或动态显示提供过滤。特别适用于子报告等