1. 问题描述

对于多数据集关联报表,当数据很大时报表的展现速度就会很慢,或通过写sql语句又很复杂。为此FineReport提供一种,既可加快报表的展现速度,又不用编写复杂的sql语句的方案。即使用动态参数注入功能。

2. 原理

动态参数注入,是通过注入的值对数据库中的数据进行操作的,只是取对应的数据,所以会提高报表的性能。

3. 示例

  • 新建模板

展现多个关联数据表的数据

SQL语句,ds1:SELECT * FROM [订单]

SQL语句,ds2:SELECT * FROM 订单明细

  • 报表样式

传统做法:先定义多个数据集,然后在报表中设置过滤条件,或使用连接将多个数据表定义成一个sql,但这两种方案会产生的一系列问题(具体下面有介绍)。而使用动态参数注入的功能可解决大数量报表展现的速度,下面对比看下这三种做法。

3.1 设置过滤

此方法是定义两个数据集查询出所有数据,然后在报表中设置过滤条件。

分页预览query_like.cpt,从日志中可看出,是将第二个数据集中的数据全部取出了,如下所示:

注:对于数据量大的报表,若将数据全部取出会降低报表的性能,因此会降低报表的展现速度。

3.2 定义sql

若是采用将两个数据集定义成一个数据集,则SQL语句为:select a.订单ID,订购日期,到货日期,发货日期,产品ID,单价,数量,进价,折扣 from 订单 a,订单明细 b where a.订单ID=b.订单ID

注:当数据集很多时, 这样定义sql很麻烦,看了也觉得很复杂。

3.3 使用动态参数注入

  • 修改sql语句

将上述模板中,数据集ds2的sql语句,修改成:SELECT * FROM [订单明细] where 订单ID =${orderid},并将参数orderid设置个默认值为订单ID中的一个值,如:10248。

  • 参数注入设置

双击原进行过滤的E2单元格,在弹出数据列对话框中,点击动态参数注入按钮,弹出动态参数注入对话框,然后点击插入:名字和值分别为数据集ds2的参数:orderid和数据集ds1对应数据列所在的单元格:A2,且同时删除过滤条件。

点击设计器预览是,日志中可看出每执行一行就只是取出的对应订单ID的那条数据,如下图所示:

注:动态参数注入功能适用于大数据量报表,能够明显的体现出速度优势,而上文中的模板只是介绍其方法的。

转载于:https://www.cnblogs.com/laoA188/p/4828108.html

报表性能优化方案之善用参数注入相关推荐

  1. 报表性能优化方案之多数据集实现层式报表

    1. 问题描述 若报表使用的数据量是上百万条的话,觉得报表展现的速度慢,可以使用层式报表来提高报表展现速度.但由层式报表章节可以得知,层式报表必须是单数据集,若是多数据集的模板且数据量又很大,想要提高 ...

  2. 报表性能优化方案之报表服务器优化基础讲解

    内存 JVM堆栈内存是决定应用服务器性能的关键指标,一般服务器默认的内存配置都比较小,在较大型的应用项目中,这点内存是不够的,因此需要进行查看与修改Web服务器内存大小,接下来就介绍服务器内存查看的方 ...

  3. 报表性能优化方案之多种报表服务器内存修改方法

    服务器内存修改 各应用服务器的内存配置方法不尽相同,如下列出了常用服务器的JVM参数(-Xms,-Xmx)配置方法. JVM参数定义: - Xms: 初始化内存大小 - Xmx: 可以使用的最大内存 ...

  4. 报表性能优化方案之单数据集分页SQL实现层式报表

    1.概述 我们知道,行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分 ...

  5. oracle做分页式报表,报表性能优化方案之单数据集分页SQL实现层式报表

    1.概述 我们知道,行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分 ...

  6. react性能优化方案_React灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...

    react性能优化方案 在我以前的文章中,我研究了一个虚拟的交易引擎,并将基于Java的阻止解决方案与基于Node.js的非阻止解决方案进行了比较. 在文章的结尾,我写道: 我怀疑随着Node.js的 ...

  7. 微信小程序性能优化方案

    文章目录 微信小程序性能优化方案 提高加载性能 小程序代码包准备(下载代码包) 开发者代码注入 页面渲染优化 提升渲染性能 setData工作原理 优化方法 微信小程序性能优化方案 微信小程序如果想要 ...

  8. Mysql性能优化方案

    2019独角兽企业重金招聘Python工程师标准>>> 内容简介:这是一篇关于mysql 性能优化的文章.网上有不少mysql 性能优化方案,不过,mysql的优化同sql serv ...

  9. kvm性能优化方案---cpu/内存/磁盘/网络

    kvm性能优化方案 kvm性能优化,主要集中在cpu.内存.磁盘.网络,4个方面,当然对于这里面的优化,也是要分场景的,不同的场景其优化方向也是不同的,下面具体聊聊这4个方面的优化细节. cpu 在介 ...

最新文章

  1. 某团技术拷问:ArrayList 和 LinkedList 哪个更占空间?
  2. 雷电2接口_地表最强?代替电脑的所有接口,雷电3或有望一统接口江湖
  3. kpc v0.8.3发布,跨框架的组件库解决方案
  4. linux 平均磁盘请求数量,Linux之 iostat 解读磁盘io
  5. Web Services简单介绍
  6. 《MySQL——查询长时间不返回的三种原因与查询慢的原因》
  7. mybatis学习(13): 连接数据库之前的准备(测试连接)
  8. matlab编程 英文翻译,MATLAB编程,MATLAB programming,音标,读音,翻译,英文例句,英语词典...
  9. vue router 路由鉴权(非动态路由)
  10. Tempter of the Bone
  11. 麦迪逊大学计算机科学咋样,威斯康星大学麦迪逊分校计算机科学基本信息全览...
  12. 新浪微博回应热搜被暂停更新一周;即刻 APP 下架一年后恢复上线;Android 11 Beta 版发布| 极客头条...
  13. Java学习个人备忘录之文档注释
  14. NET、wap网络的区别
  15. 如何快速比对两个文件夹中的文件
  16. python使用matplotlib可视化线图(line plot)、使用semilogy函数将Y轴数据处理为对数坐标(logarithmic scale in Matplotlib)
  17. 无根树(无环连通无向图)的Prufer编码
  18. 我为什么花 1 万多买 MacBook Pro,重点是推荐我常用的开发写作相关的工具
  19. 支付宝小程序H5域名配置
  20. 中国人海外购房似网购般简单:不看房先付款

热门文章

  1. php 编辑器格式输出_高效PHP开发人员的十大PHP开发工具
  2. 计算机上的科学计算器怎么使用,电脑自带的科学计算器怎么使用?
  3. 汇编语言典型例子详解_汇编语言例子_汇编语言 举例子
  4. python type函数_Python type()函数
  5. python 日期格式打印_Python打印格式
  6. Java 8日期– LocalDate,LocalDateTime,即时
  7. java文件中获取创建日期_如何在Java中获取文件的上次修改日期
  8. shell学习之定时运行作业
  9. 我想自学C++,可以吗?需要注意些什么呢?
  10. Java基础篇之什么是类集?