在做报表时,数据量少的情况下,不明显,但数据量过大的情况下,可能就会出现预览数据缓慢等情况,这时我们可以设计报表时,进行一些优化。

1.优化报表运算时间,皕杰报表的brt文件在服务端是由servlet解析的,其报表生成的运算顺序是:变量参数运算-->数据集取数及运算-->报表运算及扩展... ... ,前面的步骤未走完,是不会往下进行运算的。对各个步骤检查优化,去掉不必要的东西,尽量减少隐藏行列,单元格合并等等。


2. sql与数据集函数

报表中,经常会出现多个单元格的数据来自同一个数据表,但是取出的条件不一样,或者条件相同,取出的字段或表达式不一样等等,如果你细心研究,会发现这些单元格的数据完全可以通过一个sql取出来,然后再通过数据集的函数算出每个单元格的值。

如果将多个sql合并以后,取出的数据量并没有增大非常多,那么我们建议您尽量将sql合并,充分利用数据集函数中的条件表达式来算每个单元格的值;

如果sql合并后,取出的数据量增大了非常多,那么我们建议您尽量将sql拆开,减少传输的数据量。

这两者是一个权衡的关系,sql多的时候,系统访问数据库的次数多了,导致效率低;反之,sql少了,可如果传输的数据量变的非常大,同样会导致效率非常低。所以需要用户根据实际情况权衡利弊。

注意

  • 尽量在sql里进行group
  • 尽量不用select * from
  • 尽量在sql里排序
  • 尽量在sql里过滤

3. 尽量的使用扩展,这样既高校,又不容易出错。


4.设置数据类型时,精度相对即可,精度不用最高也可以,一般来说精度越高运算效率越慢。


5.灵活运用多数据集

有的时候在做报表设计的时候,用单数据集和多数据集都能实现一个报表的功能,那么在何种情况下应该用单数据集?何种情况下用多个数据集呢?这里有以下2个原则:

  • 网格式、分组式、交叉式尽量用单数据集
  • 分片式、多源报表尽量用多数据集