报表知识库
我要提问

单数据集的使用

在不同的报表情况下,我们可以考虑不同的数据集数量来达到报表性能的最优化,以下我们举一个交叉报表的例子,用一个数据集的效率和多个数据集的效率进行比较。

看如下的报表:
1.jpg

这是一个比较典型的多层交叉报表,其做法有两种:

第一种:

这种做法设计了五个数据集,每一层的表头都来自一个码表,交叉点的数据汇总时根据条件和表头关联2.jpg

第二种:

3.jpg

这种做法只设计了一个数据集,把码表和事实记录表叉乘起来,在报表中进行分组扩展

我们试比较一下两种做法的优缺点:

第一种做法:

1、 数据集不需要对多表进行叉乘,取数速度快

2、 事实记录数据集可以在sql里先进行分组聚集操作,减少取过来的记录书,加快取数的速度和报表运算速度

3、 表头扩展直接对码表进行select操作,运算速度快

4、 交叉点汇总需要对事实记录表进行检索遍历,查找出和表头关联的记录进行汇总,交叉点的格子数远远大于表头单元格的个数,事实记录表的记录数也一般远远大于码表的记录数,每个交叉点都要对事实记录表遍历检索一次,运算速度非常慢

第二种做法:

1、 数据集需要对码表和事实记录表进行叉乘,取数速度慢,但是一般情况下码表的字段数只有一两个,而且数据库有索引,记录数不是非常大的情况下慢不了很多

2、 在数据集sql里就可以对表头字段先进行分组聚集,这样取过来的记录数大大减少,加快了取数速度和报表的运算速度

3、 表头单元格是对事实记录表进行分组操作,然后再扩展,比第一种做法慢一些,但是由于对数据集只要进行一次的分组操作,因此慢不了太多

4、 交叉点汇总不需要再对事实记录表进行检索遍历了,而是直接对当前组集里的记录进行汇总,因此速度大大提高了

总结:第二种的做法性能优于第一种。

引自:润乾报表知识库
原文链接:单数据集的使用
相关文章:一种实现类似excel把负数显示成红色且去掉负号的方法 ; 导入带公式excel的问题web报表的扩展功能润乾报表出了新版统计图解决行式填报导入excel发生错位的问题
其他相关内容: 润乾商业智能解决方案商业智能BI联盟 ; Java报表 ; 报表软件