社区
图表区
帖子详情
reportview 加载报表
ff_1211
2011-06-21 11:30:03
我的报表是rdlc格式,用reportview加载 ,很慢,有哪些原因。怎么提升这速度??
数据库记录6万条,查询所有。 直接在sqlserver中耗时很短 2秒 ,可在网页中用reportview加载,达到1分钟以上
求助各位!
...全文
286
11
打赏
收藏
reportview 加载报表
我的报表是rdlc格式,用reportview加载 ,很慢,有哪些原因。怎么提升这速度?? 数据库记录6万条,查询所有。 直接在sqlserver中耗时很短 2秒 ,可在网页中用reportview加载,达到1分钟以上 求助各位!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
阿泰
2011-06-22
打赏
举报
回复
1:从理论上讲,手工分页会比自动分页慢些。
所以我建议你这样试试:再优化这个SQL语句,尽量到毫秒级。另外就是尽量减少RDLC报表上面的再处理
比如根据条件加底色加粗等等,减少自定义函数等各种自定义的环节,不用手工分页,使用自动分页。
再看看。
另外,他说的是50W条返回结果还是50W数据表里的结果呢,这个差别很大。
2:我们项目用的是水晶报表,所以对RDLC报表的话,我大数据量上的经验并不丰富。
水晶报表在处理清单类报表上有比较好的优势,但是有个很大的劣势就是导出性能差
基表数据是亿级(还没上10亿)。
但是如果超过50W我们基本上不允许显示。这样的数据页面展现、导出基本上没有任何意义
因为你不可能去从这么浩瀚的数据里去直接发现什么。
只有打印、或者是导出到Excel(或导入其他业务接口)里做二次分析。
前者的打印因为是要耗费大量的物理资源(长时间占用打印机以及耗费打印资源)后者要占用大量的服务器资源
所以我们一般会把这个作为一个单独的业务需求来处理的,也就是他们会提一个数据接口申请。我们会返回一个数据库表的导出文件给他。
50W在呈现上大概在20秒内,但是在页面上导出的话大概要30分钟(水晶报表的劣势)。
如果客户需要大数据范围的数据,我们会用SQL直接在数据库上出一个给他。
现在我们在架构一个新的平台,来将这个手工动作自动化。
但是,最终如果数据达到10w级(根据用户的权限级别设定)
我们一般是在后台调度,调度完后给他一个通知(短信或邮件),然后他再上来后就可以下载生成的数据接口文件,而不是在报表上直接展示。
我们主要做的是业务系统,跟一般的WEB不大一样,所以可能参考性比较不强。呵呵。
我建议你先按1试试。。
ff_1211
2011-06-22
打赏
举报
回复
[Quote=引用 5 楼 babyt 的回复:]
不管界面上怎么处理,只要是取了大的数据全集,那么效率肯定会慢的。
SQL Server的2s只是纯取数据,RDLC拿到数据后,还要进行页面渲染,分页等等系列操作。
所以慢是正常的。
思路是这样的:
因为这么大的数据量一般是清单显示,所以界面相对单一。
这个首先对数据进行一次Count,返回到程序里,然后根据这个总数分页,把页码作为参数传递给报表
(第几页,共几页都可以算出来)
……
[/Quote]
阿泰 你好
我有几点疑问:
1.昨天也是一个做报表的朋友告诉我,他50W的数据,用reportview显示,耗时才不过几秒钟;并且用的是reportview自带的分页,并没有手动分页,没有修改工具栏;跟他的比起来我的数据量几乎是微乎其微,但是速度是慢的惊人,这如何解释呢?
2.你们做报表的数据量应该至少也是万条为单位吧;你们测试的速度大概在一个什么范围内,如果耗时比较长又是如何处理这个问题呢?是不是就像你刚才给我的建议这样处理的?
3 如果你们采取的是手动分页,手动修改工具栏这个解决方案,那么可不可以给个小例子给我参考参考呢?
阿泰
2011-06-22
打赏
举报
回复
不管界面上怎么处理,只要是取了大的数据全集,那么效率肯定会慢的。
SQL Server的2s只是纯取数据,RDLC拿到数据后,还要进行页面渲染,分页等等系列操作。
所以慢是正常的。
思路是这样的:
因为这么大的数据量一般是清单显示,所以界面相对单一。
这个首先对数据进行一次Count,返回到程序里,然后根据这个总数分页,把页码作为参数传递给报表
(第几页,共几页都可以算出来)
然后用用分页存储过程,每次返回一页的数据给RDLC。这样组合成一个页。
但是要注意的是,这样的话,工具条就要自己改造了。
比如翻页动作,导出、打印动作。这样的话,工作量就巨大了。
阿泰
2011-06-22
打赏
举报
回复
囧~~
非常感谢ff_1211能分享问题的原因和解决方法 :)
ff_1211
2011-06-22
打赏
举报
回复
阿泰你好:
我现在终于知道我的报表为什么如此慢了,
最重要的原因在于:我在报表结果呈现之前,将报表导成了excel文件于服务器上。此步骤耗时比较多。
这步骤是为了实现我程序中,另一功能,写了很久了,都忘记做了这一操作。。哎。
之前因数据量小,没有很明显的看出效率问题
最后,非常感谢你的帮助
阿泰
2011-06-22
打赏
举报
回复
[Quote=引用 8 楼 ff_1211 的回复:]
恩,首先谢谢你的回答!
我按照你给的建议1先测试测试。
不过你在第一回答的时候,提供的思路就是指的手动分页吧!怎么从理论上又说这样速度会比自动分页慢呢?
或者说是我理解错误,你指的并不是手动分页,而是其他说法?
[/Quote]
自动分页一般是报表按照设定的页面(或纸张)大小进行的,
而手工分页可能有很多情况,你可能简单指定一个每页行数,也可能有其他条件的依赖等等。
我的总体意思是,在数据量很大的时候,尽可能少地在报表上做一些设定动作。
ff_1211
2011-06-22
打赏
举报
回复
恩,首先谢谢你的回答!
我按照你给的建议1先测试测试。
不过你在第一回答的时候,提供的思路就是指的手动分页吧!怎么从理论上又说这样速度会比自动分页慢呢?
或者说是我理解错误,你指的并不是手动分页,而是其他说法?
chenhaoying
2011-06-21
打赏
举报
回复
网页加载的内容达到10M的话速度就变得很慢很慢了,6w条数据建议分页显示,不要一下子显示。
ff_1211
2011-06-21
打赏
举报
回复
[Quote=引用 3 楼 wxr0323 的回复:]
设置组属性
1. 工具箱中拖一个列表过来,设置 列表-->行组-->组属性
常规-->组表达式=Int((RowNumber(Nothing)-1)/10)
分页符-->勾选在组的结尾
2. 工具箱中拖一个表,放在列表中,然后可以对表进行随意设计,表中分组就会自动按照10条一页进行分页,标题也会在新页中被重复打印了
3.公式:=Sum(Fields!数量.Value) 这样的格式……
[/Quote]
这样处理后,页面同样是显示很慢。。这种处理应该也是全部读取数据,然后再对结果分页,显示几条记录吧
子夜__
2011-06-21
打赏
举报
回复
设置组属性
1. 工具箱中拖一个列表过来,设置 列表-->行组-->组属性
常规-->组表达式=Int((RowNumber(Nothing)-1)/10)
分页符-->勾选在组的结尾
2. 工具箱中拖一个表,放在列表中,然后可以对表进行随意设计,表中分组就会自动按照10条一页进行分页,标题也会在新页中被重复打印了
3.公式:=Sum(Fields!数量.Value) 这样的格式在分组中,就是求组小计,
在不是分组的情况下,就是合计。
4.而自动生成的语句是用的:=Sum(Fields!数量.Value, "DataSet_Name")
这条是自动生成的无论有没有分组的情况下,都是所有记录的合计
参考
ff_1211
2011-06-21
打赏
举报
回复
[Quote=引用 1 楼 chenhaoying 的回复:]
网页加载的内容达到10M的话速度就变得很慢很慢了,6w条数据建议分页显示,不要一下子显示。
[/Quote]
自定义分页显示,是不是就和平常自定义gridview分页一样?
用
Report
View
控件展示Rdl服务器
报表
可行性研究
而服务器
报表
在设计阶段必须绑定数据源,所以,考虑采取这样的方式来实现RTS
报表
体系:用服务器
报表
来做设计,用
Report
View
控件来做展示,即用
Report
View
控件来展示Rdl
报表
。2 验证过程n 用SQL Ser
Report
View
动态
加载
带参数的RDCL文件及子
报表
同上一篇差不多,这次咱们
加载
带有子
报表
的RDCl文件。首先还是创建一个form程序,在form2窗体中添加一个Repor
View
控件,load方法如下: private void Form2_Load(object sender, EventArgs e) { DataSet ds3....
C# RDLC
Report
View
报表
小Demo
STEP3-
报表
文件关联对象 ,右键新建数据集-》选择数据源来自对象-》修改名称可以根据项目需求来修改,此处是直接默认值DataSet1,数据源来自项目:Rrport
View
Test,数据源来自对象TestDataMode;翻译看看是啥意思,说明...
Report
View
er动态
加载
报表
文件
页面上放置一个
Report
View
er1和两个按钮ButtonBing,ButtonXian点不同的按钮
Report
View
er1显示不同的
报表
文件(
Report
xian.rdlc和
Report
bing.rdlc) */ protected void ButtonXian_Click( object sender, ...
报表
的使用步骤
report
view
关于编写
报表
,职场中的人相信都会有所感慨,一份整洁、优美的
报表
会为你在上司面前增色不少,甚至加薪 :) ——大家都喜欢加薪,对吧?在本文中,将向大家介绍怎样利用MS
Report
ing Service...
图表区
4,816
社区成员
14,134
社区内容
发帖
与我相关
我的任务
图表区
.NET技术 图表区
复制链接
扫一扫
分享
社区描述
.NET技术 图表区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章