1. 概述
很多用户在使用帆软 FineReport 的时候,经常出现页面加载时间过长的现象,影响用户体验。本文将总结相关原因和解决方法。
如果用户所在场景行式引擎无法支持,则可以试用 新计算引擎功能 ,实现多数据源情况下的分页查询功能,用户无需再写复杂的分页 SQL 或 JS 按钮,就可以让报表快速完成首页加载。
注:该功能支持 Oracle、SQL Server、MySQL、HANA、PostgreSQL、Impala、DB2 等大部分主流 JDBC 数据源。
2. Excel 导入模板中慎用控件
问题描述:导入 Excel 的模板,如果存在大量控件,会因为页面加载大量控件造成导入进程缓慢。
测试发现:导入一个 200 行 10 列的 Excel,增加控件的模板需要 100 秒左右才可以完成页面加载,去掉控件的模板只需要 10 秒左右。
3. SQL 查询时只取需要的字段
问题描述:SQL 查询语句中不应使用 select * 取全部回值,只需要取自己所需的字段即可。
测试发现:两种取数方式有 20-30% 的效率影响。
4. 数据库建立合理的索引
问题描述:数据库建立正确有效的索引,正确使用存储过程可以极大提高效率。
测试发现:10 万条数据的数据库,建立索引和不建立索引,有大约 5 倍的性能差。
5. 慎用「过滤」操作
问题描述:数据集过滤比单元格过滤效果高。
测试发现:如果能在建立数据集时,用 where 条件对数据进行过滤,相比于在报表制作过程中再过滤,效率会极大提高。
6. 不要重复使用条件属性
问题描述:对于行或列设置的条件属性,只需要给任一单元格设置条件属性即可,无需整行整列均添加上。
测试发现:单个单元格的条件属性应用于整行,可以避免同样的条件被多次运算执行。
7. 同一个页面的控件数量不宜过多
问题描述:在设计报表时,应当尽量减少控件数量。如实在需要多控件,也可考虑不勾选「直接显示控件」选项,都可以提高报表展现效率的。
测试发现:当一个页面的控件数量超过 100 个,就会拖慢页面展现速度,超过 500 就很容易造成超时。
8. 不宜过度依赖帆软来处理数据
问题描述:对于非必要的各项运算,统计数量、过滤等操作,建议交给数据库执行。帆软只做自身更具优势的处理,会提高页面展示效率。
测试发现:数据库在进行上述操作的时候,能够进行大量的优化算法,而帆软只能被动的一一匹配。
9. 报表加载和查询比较慢
问题描述:数据量较大或受限于数据源性能时,报表展现和查询速度很慢。
测试发现:使用 抽数缓存 功能提升报表执行速度。