查询SSRS数据集中的视图与表

时间:2009-11-17 19:53:54

标签: sql sql-server reporting-services

在SSRS中使用数据集时是否有最佳做法?我应该为直接从表中提取的数据集编写查询,还是应该在源数据库中创建视图,然后通过数据集查询视图?

我理解在某些情况下视图会更好(集中视图以便在多个报表中使用)以及某些情况下表格的查询会更好(如果您不允许访问在源中创建视图) DB或在一个报表中使用多个DB数据源)。但是有任何性能影响吗?服务器是否仍能以与视图中的结果类似的方式从SSRS缓存数据集查询的结果?

任何见解都将受到赞赏: - )

4 个答案:

答案 0 :(得分:5)

取决于。

使用视图隔离数据模型更改 - 表可以更改,但只要您可以像以前一样获取数据,就可以了。视图只是一个SQL语句,就像运行子选择一样。由于封装,底层查询的风险更高,风险更高。使用物化视图(SQL Server中的索引视图)是一种使查询更快的选项,但要求非常有限。

如果您在众多报告中看到需要相同的信息 - 是的,请使用视图。否则直接查询表。

无论哪种方式,都可以通过存储过程来实现......

答案 1 :(得分:3)

我会提醒您不要使用引用其他视图的视图。我看到这些会造成性能问题。

答案 2 :(得分:2)

我通常使用存储过程来处理我的报告,这样任何代码都可以被重用(并且是一致的)。此外,您可以在sp中应用过滤,这会减少加载时间。

答案 3 :(得分:1)

如果性能真的很重要(如果DBA允许的话),请考虑为每个报告创建一个表而不是一个视图。

创建一个存储过程,以在每晚刷新时更新表。报告中设置的数据将很简单

select *
from rptRydmansTable
where Column1 = @Parm1 and Column2 = @Parm2

这些东西飞起来!