1. 问题描述html
这样一种报表:报表形式很是简单,只是简单的单数据源明细报表,可是数据量很是大,百万、千万甚至更多。报表取数及计算时间至关长。mysql
但愿可以提升报表展现速度,对于用户来讲,查询报表不会有滞后的感受。sql
解决方案提供工具:报表开发工具FineReport。数据库
2. 解决方案浏览器
2.1 解决方案工具
对于单数据源明细报表,能够启用行引擎来执行报表,提升报表展现速度,优化用户体验。sqlserver
2.2 原理性能
普通报表:取出所有数据后再执行报表,最后返回总体的报表结果给浏览器,用户访问到看到结果的时间=报表取数时间+报表执行时间;开发工具
行引擎报表:边取数边执行报表,执行到哪页用户就能够看到哪页,用户访问到看到结果的时间=首页数据读取时间+首页计算时间。优化
2.3 注意事项
行引擎报表注重的是性能,由原理咱们能够想象,对于行引擎报表,每页的计算必须是独立的,即报表不能有单元格关联的复杂运算,相似,为了提升行引擎报表的性能,FR舍弃了一些复杂的功能:
行引擎报表只适用于单数据源、即单元格过滤不能使用,且必须是简单明细表,同时也不支持计算、条件属性等复杂报表功能。
3. 实现步骤
咱们以mysql数据库为例,将里面的S订单明细的数据用行式引擎显示,每页显示30行,设置以下:
3.1 新建数据集
数据集ds1:SELECT * FROM S订单明细。
3.2 模板主体设计
以下图,将表中的列所有拖曳至模板主体中:
3.3 行式引擎设置
选择模板>报表引擎属性,勾选用行式的引擎来执行报表,再勾选下面的使用按页运算分段执行报表,每页记录数使用默认值30,以下图:
3.4 效果查看
点击分页预览,效果以下:
行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其余数据库,如access,sqlserver2005等必须手动编写分页sql,才能实现按页取数,对于须要编写分页sql的数据库,请参考单数据源实现层式报表章节。
行式引擎只适用于单数据源报表,对于多数据集报表,行式引擎没法实现对其进行分页显示,多数据源的层式报表的实现请查看多数据集实现层式报表。