启用行式引擎执行层式报表

编辑
  • 文档创建者:文档助手1
  • 浏览次数:14686次
  • 编辑次数:13次
  • 最近更新:Kevin-s 于 2019-06-09
  • 1. 描述

    这样一种报表:报表形式非常简单,只是简单的单数据源明细报表,但是数据量非常大,百万、千万甚至更多。报表取数及计算时间相当长。

    希望能够提高报表展示速度,对于用户来说,查询报表不会有滞后的感觉。

    2. 思路

    2.1 解决方案

    对于单数据源明细报表,可以启用行引擎来执行报表,提高报表展示速度,优化用户体验。

    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和sqlserver2012 及以上数据库,其他数据库,如 Sqlite,Access,sqlserver2005 等必须手动编写分页 SQL,才能实现按页取数,对于需要编写分页 SQL 的数据库,请参考单数据集分页SQL实现层式报表章节。

    注:sqlserver2012 及以上是支持行式引擎的的,但是 SQL 中一定要写 order by。

    行式引擎只适用于单数据源报表,对于多数据集报表,行式引擎无法实现对其进行分页显示,多数据源的层式报表的实现请查看 多数据集实现层式报表


    附件列表


    主题: 性能优化
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]