论坛首页 Java企业应用论坛

记一次代码优化—大数组拆分查询

浏览 9241 次
精华帖 (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());
			
		}
0 请登录后投票
   发表时间:2010-08-04  
hanxing0331 写道
bDAO.queryCountByOwnerForList(temp) 这个里面是怎么查的,如果也是按每个id查一次,那每n条id查一次数据库和每个id查一次数据的差距有多少呢?那 temp 这个是不是也多余呢? 这点有点不明白


后面有我的sql  每次统计一批数据比1次统计1条快
0 请登录后投票
   发表时间:2010-08-04  
蔡华江 写道
25707332 写道
mathfox 写道
太复杂了,没有看

不过Oracle有dblink这个东西,能支持两个数据库一起查。


!
那我就不知道为什么项目经理叫我这样做了。。。


我也想说有dblink,只是不知道dblink效率怎么样,以前用来导些数据,感觉不是很好


没有测试过,不过感觉用的正确的话,怎么也比JAVA代码快的多吧。

我现在天天用dblink导数据仓库的数据。
0 请登录后投票
   发表时间:2010-08-04  
写个中间件,实现异构数据的join,以后可以重用了。
0 请登录后投票
   发表时间:2010-08-04  
饿。。我想说  重点是优化过程  不是功能。。。
0 请登录后投票
   发表时间:2010-08-04  
dblink比较慢,导过去再查最快,哈哈.不过要看场景了.
0 请登录后投票
   发表时间:2010-08-05  
mathfox 写道
蔡华江 写道
25707332 写道
mathfox 写道
太复杂了,没有看

不过Oracle有dblink这个东西,能支持两个数据库一起查。


!
那我就不知道为什么项目经理叫我这样做了。。。


我也想说有dblink,只是不知道dblink效率怎么样,以前用来导些数据,感觉不是很好


没有测试过,不过感觉用的正确的话,怎么也比JAVA代码快的多吧。

我现在天天用dblink导数据仓库的数据。


不使用dblink,还可以选择使用物化视图,物化视图是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。而且物化视图可以配置成当远程数据有修改时实时更新物化视图。保证数据的一致性。建议考虑
0 请登录后投票
   发表时间:2010-08-05  
dblink还是物化视图要以需求而定,优化过程不错
0 请登录后投票
   发表时间:2010-08-05  
gongmingwind 写道
dblink还是物化视图要以需求而定,优化过程不错


饿 谢谢 本来想和大家一起讨论下代码优化或重构,结果大家都讨论dblink去了  囧~
0 请登录后投票
   发表时间:2010-08-05  
蔡华江 写道
25707332 写道
mathfox 写道
太复杂了,没有看

不过Oracle有dblink这个东西,能支持两个数据库一起查。


!
那我就不知道为什么项目经理叫我这样做了。。。


我也想说有dblink,只是不知道dblink效率怎么样,以前用来导些数据,感觉不是很好


dblink如果涉及到大数据量还是会有一定性能影响的,特别是涉及到两个不同服务器时....
我们的数据库是使用相同的服务器,所以基本还是能够接受,比写代码确实简化了很多很多...
还有就是oracle中dblink与blob字段合用会不稳定的出现问题,如果再加上临时表...就很容易出现问题..
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics