background image
报表性能优化方案之报表取数
1. 取数原理
设计器拼出最终的 SQL,将 SQL 语句传给数据库,数据库执行,将数据返回给设计器。
由于计算过程首先要通过 SQL 语句从数据库中取数据,我们可以通过控制数据量的大小
和对数据的提前预处理来提高报表的性能。下面是一些优化的方法。
2. 优化 SQL
FineReport 报表的数据集采用的是表模型,也就是说通过 SQL 这种 DSL 语言,从数据
库通过简单查询或各种组合关联查询得到一个关系表,而这部分 SQL 查询根据各种数据库
产商长时间的优化(比如建立索引),已经非常成熟。数据集一般要通过 FineReport 报表模
型的复杂处理才能生成最终的表样。因此,从数据库 SQL 查询取出数据量越少,FineReport
报表模型需要做的复杂处理和计算就越少,所花的时间和内存就少,从而可以提高性能。
2.1 SQL 语句取具体的字段
我们一般会用 select * from 这样的形式将一个数据库表中所有的字段都取出来,而其
中一些字段是报表中不需要用到的,例如报表中只需要用到三个字段,但是数据库中实际的
表有十个字段,一些初学者习惯性的用 select * from table1,这样相当于把十个字段的数
据都取到报表服务器端,增加了报表服务器端的内存占用以及减慢了运算速度,所以 SQL
语句中尽量不要用“*”号,而是写上具体的字段,能够减少报表服务器端的内存占用,加
快报表的运算速度。
2.2 SQL 中直接分组代替报表中分组