最近工作做了一个优化:一个数据表有几百万甚至千万条的记录,符合条件的也有十几万条,要取出来出到excel里做报表,原来是一次性读取到一个sheet,直到一个sheet放不下系统出错,才开始修正这个问题。
我首先想到的是分页(分sheet)显示数据,于是读取的话也分页读取,而不是一次性读取出来,然后拆分结果集。实现之后一个最佳效率的问题自然而然的就产生了,oracle分页,每页大小多少最佳?(现在是65536,也就是excel2003的最大值)。也就是如果只考虑查询速度,在最短的时间内查出所有的值,每页到底该有多大?首先我感觉一次性读取全部内容效率应该不是最高的(直观感觉),另一种极端情况,一页一条记录,读取十几万次应该也不是最好的,所有中间比应该有个最优值,这个值该怎么算?谁研究过?
我首先想到的是分页(分sheet)显示数据,于是读取的话也分页读取,而不是一次性读取出来,然后拆分结果集。实现之后一个最佳效率的问题自然而然的就产生了,oracle分页,每页大小多少最佳?(现在是65536,也就是excel2003的最大值)。也就是如果只考虑查询速度,在最短的时间内查出所有的值,每页到底该有多大?首先我感觉一次性读取全部内容效率应该不是最高的(直观感觉),另一种极端情况,一页一条记录,读取十几万次应该也不是最好的,所有中间比应该有个最优值,这个值该怎么算?谁研究过?
解决方案 »
- xsl 模版
- ssh中应用WEB service出现异常(好多人都无法解决,诶!!)
- spring注入问题
- hibernate查询问题
- 【求助】struts2向前台返回json数据该如何配置
- 100分悬赏求解,页面跳转问题,在线等
- [TOMCAT]为什么webapps/examples/.../classes/下的servlet可以运行,自己webapps/myApp/../classes的却不行,烦闷!
- tomcat设置问题[急]
- struts简单问题,我再问!!
- 请教request.getSession().getServletContext().getRealPath("/");这句话获取的是服务器路径吗?
- NetBeans IDE 7.1怎么用extjs,怎么配置
- 关于java
或者分到每页65536,好像EXCEL表行数最大是65536。
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21
我的sql是类似这样的。 SELECT * FROM TABLE_NAME 是最终的查询语句 。。
没用啥框架,就是JDBC直接跑sql
shell+ sqlload
建表索引和分区都加上,导入很快
导出的话,csv不行么?
我们纯java,怎么调shell没搞过,不过csv确实不行,客户有些确实会看。csv的没格式。。