锁定老帖子 主题:记一次代码优化—大数组拆分查询
精华帖 (0) :: 良好帖 (1) :: 新手帖 (2) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-04
最后修改:2010-08-04
class Page implements Iterator<List>{ int page = 5; int start = 0 ; int split = start + page ; List list ; public Page(List list ){ this.list = list; } public Page(List list ,int page ){ this.list = list; this.page =page; } public boolean hasNext() { return start < list.size(); } public List next() { List result = list.subList(start, split ); start = split; split += page; split = Math.min(split,list.size()); return result; } public void remove() { throw new RuntimeException("not to change"); } } 拆分数据 . 用法: List list = new ArrayList<String>(); for(int i = 0 ; i <10; i++){ list.add("A"+i); } Iterator<List> p = new Page(list); while(p.hasNext()){ System.out.println(p.next()); } |
|
返回顶楼 | |
发表时间:2010-08-04
hanxing0331 写道 bDAO.queryCountByOwnerForList(temp) 这个里面是怎么查的,如果也是按每个id查一次,那每n条id查一次数据库和每个id查一次数据的差距有多少呢?那 temp 这个是不是也多余呢? 这点有点不明白
后面有我的sql 每次统计一批数据比1次统计1条快 |
|
返回顶楼 | |
发表时间:2010-08-04
蔡华江 写道 25707332 写道 mathfox 写道 太复杂了,没有看
不过Oracle有dblink这个东西,能支持两个数据库一起查。 ! 那我就不知道为什么项目经理叫我这样做了。。。 我也想说有dblink,只是不知道dblink效率怎么样,以前用来导些数据,感觉不是很好 没有测试过,不过感觉用的正确的话,怎么也比JAVA代码快的多吧。 我现在天天用dblink导数据仓库的数据。 |
|
返回顶楼 | |
发表时间:2010-08-04
写个中间件,实现异构数据的join,以后可以重用了。
|
|
返回顶楼 | |
发表时间:2010-08-04
饿。。我想说 重点是优化过程 不是功能。。。
|
|
返回顶楼 | |
发表时间:2010-08-04
dblink比较慢,导过去再查最快,哈哈.不过要看场景了.
|
|
返回顶楼 | |
发表时间:2010-08-05
mathfox 写道 蔡华江 写道 25707332 写道 mathfox 写道 太复杂了,没有看
不过Oracle有dblink这个东西,能支持两个数据库一起查。 ! 那我就不知道为什么项目经理叫我这样做了。。。 我也想说有dblink,只是不知道dblink效率怎么样,以前用来导些数据,感觉不是很好 没有测试过,不过感觉用的正确的话,怎么也比JAVA代码快的多吧。 我现在天天用dblink导数据仓库的数据。 不使用dblink,还可以选择使用物化视图,物化视图是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。而且物化视图可以配置成当远程数据有修改时实时更新物化视图。保证数据的一致性。建议考虑 |
|
返回顶楼 | |
发表时间:2010-08-05
dblink还是物化视图要以需求而定,优化过程不错
|
|
返回顶楼 | |
发表时间:2010-08-05
gongmingwind 写道 dblink还是物化视图要以需求而定,优化过程不错
饿 谢谢 本来想和大家一起讨论下代码优化或重构,结果大家都讨论dblink去了 囧~ |
|
返回顶楼 | |
发表时间:2010-08-05
蔡华江 写道 25707332 写道 mathfox 写道 太复杂了,没有看
不过Oracle有dblink这个东西,能支持两个数据库一起查。 ! 那我就不知道为什么项目经理叫我这样做了。。。 我也想说有dblink,只是不知道dblink效率怎么样,以前用来导些数据,感觉不是很好 dblink如果涉及到大数据量还是会有一定性能影响的,特别是涉及到两个不同服务器时.... 我们的数据库是使用相同的服务器,所以基本还是能够接受,比写代码确实简化了很多很多... 还有就是oracle中dblink与blob字段合用会不稳定的出现问题,如果再加上临时表...就很容易出现问题.. |
|
返回顶楼 | |