background image
报表性能优化方案之单数据集分页 SQL 实现层式报表
1. 概述
我们知道,行式引擎按页取数只适用于 Oracle,mysql,hsql 和 sqlserver2008 及以上数
据库,其他数据库,如 access,sqlserver2005,sqlite 等必须编写分页 SQL。
下面以 Access 数据库为例介绍需要写分页 SQL 的数据库怎样利用行式的引擎实现层式
报表。
解决方案提供工具:报表开发工具 FineReport
2. 解决思路
对于 mysql 这类可以直接使用行式的引擎实现层式报表的数据库来说,如果勾选了行式
引擎,程序会自动生成分页 sql,如,我新建了一个数据集 ds1,来源于 mysql 数据库,基
本 sql 语句为:
SELECT * FROM 订单明细
如果不定义分页 sql,勾选行式引擎选项,预览报表时,程序会将上面的 sql 语句转化
为下面的语句来取一页的数据:
SELECT COUNT(*) AS totalRowCount FROM (SELECT * FROM 订单明细) t
如果数据库是上面所说的 access 一类的无法直接生成分页 sql 的数据库,那么就需要编
写分页 SQL。
3. 操作步骤