【发布时间】:2013-04-17 16:06:40
【问题描述】:
我需要创建一个存在严重性能问题的报告。 我需要在我们的数据库中创建所有课程的目录。 这是简化的数据模型:
组织单元 --> 包含多个课程 --> 包含多个活动; 每个活动都包含以下内容:
- 附加链接列表
- 必备活动列表
- 附加属性-值对列表(编目信息)
- 每种资源类型所需资源类型和数量的列表
- 培训目标列表
我希望创建一个报告,将所有内容分组,看起来像这样:
在创建将所有表连接在一起的简单查询后,我得到了近 600 万行,因为由于将活动表与所有 1 对多关系表连接以获取附加链接资源等而出现不同的笛卡尔积...
我想通过几种方式避免这种情况:
- 子报告将列出每个活动的不同项目列表。
- 为上述每个列表创建一个 XML 字段,并在我的报告中使用 VB 对其进行解析
- 在报表中使用多个数据集,并以某种方式使用查找函数来列出不同的值。
目前的结果:
- 子报告在性能方面被证明是非常低效的,它比原来的 600 万行查询多 50%。
- xml 字段在 DB 方面非常有效,但使用 VB 格式化数据会很麻烦,如果可能的话,我非常希望避免这种情况,
- 我似乎找不到正确的方法来使用 lookupSet 来获取附件名称列表及其旁边的链接。
所以我的问题是:
- 在处理大量数据和 SSRS 2008-r2 时显示具有大量一对多关系的实体时,最佳做法是什么。
- 有没有一种方法可以使用查找功能连接数据并以某种方式创建“嵌套表”来列出一对多关系
- 非常感谢任何其他建议。
【问题讨论】:
-
您是否使用最佳的 JOIN 进行查询?首选 INNER JOIN,其次是 LEFT 和 RIGHT OUTER。避免完全外连接。您所描述的听起来像是需要优化查询,而不是更改报告。 SSRS 有“查找”方法,但 SQL 通常更擅长处理这种基于集合的数据。
-
查询真的注定要失败..因为我必须加入代表每个活动的附加数据的所有表,并且每行都会乘以
activity * number of objectives * number of resource requirements * number of additional properties * number of attachments * number of prerequisites,所以这是我想要避免进入的。 . 任何你尝试这个的方式都会以糟糕的方式结束:) -
如果我听说过,请报告仓库。通常,当我收到如此密集的查询并且您必须拥有数据时,需要考虑一些事项。 1. 你能定期将数据转储到另一个地方吗? 2. 你能把那个位置索引出来吗?我每天所做的大部分报告都是在凌晨 4:00 从生产中增量捕获,这与最后一天的不同。问题似乎在于收集和展示而不是 SSRS。我猜想任何报告策略都会遇到类似的问题。
-
在一个类似的问题中,我注意到在代表集合之一的字段之一中返回一个 XML 字符串实际上使查询明显更快,因为我必须返回更少的行并使用更少的内存。我将在今天晚些时候使用此查询尝试相同的方法,并让您知道进度...
-
你有什么工作吗?如果可以,需要多长时间?
标签: sql-server reporting-services reportbuilder3.0 ssrs-2008-r2