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. 在列表显示某个内容,但数据表没有这个字段
  2. 2021第六届数维杯大学生数学建模竞赛赛题_B 中小城市地铁运营与建设优化设计
  3. 【数据结构练习习题】java实现版(一)
  4. Android内存优化2—使用软引用和弱引用
  5. XML Schema 基本结构
  6. 获取本地沙盒文件的MIMEType
  7. zabbix yum安装
  8. 史上最全jdk版本新特性大全
  9. Qt编写echart仪表盘JS交互程序支持webkit和webengine(开源)
  10. python抽取指定url页面的title_Python使用scrapy爬虫,爬取今日头条首页推荐新闻
  11. 银行账户系统需求分析实例
  12. 两台计算机怎么网络连接,两台电脑怎么连接局域网,详细教您两台电脑怎么连接局域网...
  13. INTO CORRESPONDING FIELDS OF、去掉前导零,增加前导0。不显示物料号的前导零
  14. 有序线性表查找平均长度 ASL 公式理解,Hash表的“查找成功的ASL”和“查找不成功的ASL”
  15. EtherCAT运动控制卡的电子凸轮追剪飞剪等应用(一)
  16. Integer 十六进制
  17. IP-Guard十六个模块功能详解
  18. CSS transform属性的简单应用——双开门动画效果
  19. [OHIF-Viewers]医疗数字阅片-医学影像-使用 PropTypes 进行类型检查
  20. 实验3-1 求一元二次方程的根 (20分)

热门文章

  1. 笔记本电脑性价比排行2019_笔记本电脑性价比排行2020榜单介绍
  2. 计算机组成原理中计算机主要包括哪几部分,计算机组成原理本科生期末试卷(五)部分答案详解...
  3. matlab fft2 opencv,基于OPENCV的FFT2变换
  4. 5双机配置_CentOS 7 高可用双机热备实现
  5. c语言三元运算符_了解C / C ++中的三元运算符
  6. rds mysql_Amazon RDS上MySQL
  7. ios uiview动画_iOS UIView动画
  8. jquery显示隐藏切换_jQuery显示,隐藏,切换
  9. Python获取文件路径:os.listdir()和os.walk()
  10. 主流Java微服务框架有哪些?-开课吧