此两种做法哪个效率高些?为什么?

flyylf 2006-03-16 11:57:02
需要查询满足条件的所有记录,表呢不大也就400条,
是这样的:

先拿到一个请求数组 String[] a=new String[?];
数组长度不确定,可能是2个,3个,也可能是100多200多.
查询数据库表中满足字段值与数组元素相等的所有记录:


String sqltail=""
for(int i=0;i<a.length;i++){
sqltail+=a[i]+","
}
处理一下sqltail.
然后:
select name from table where id(a[1],a[2],a[3]......);这样好呢


还是
for(int i=0;i<a.length;i++){
sql="select name from table where id="+a[i];
db.executeQuery(sql);
....
}
求答案,哪个效率高些呢?谢谢
...全文
102 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
huantianxidi 2006-03-16
使用批处理吧.
回复
lzmhehe 2006-03-16
mark
学习
回复
polarman 2006-03-16
前一种方法可能会造成SQL语句太长,数据库系统对SQL语句的长度可能会有限制
后一种方法会造成交互的次数过多,影响效率
建议采用折中的办法,10个(当然可以自定)分一组用in查询
回复
flyylf 2006-03-16
写错了
处理一下sqltail.
然后:
select name from table where id in (a[1],a[2],a[3]......);这样好呢

少了一个in 字
回复
wizardblue 2006-03-16
几百个字段也太恐怖了一点吧
回复
interpb 2006-03-16
第二种你执行的查询太多了吧

自己在方法执行的前后

long l1 = System.currentTimeMillis() ;
//select operation
long l2 = System.currentTimeMillis() ;

long l = l1 - l2 ;
比较一下就可以了
回复
北极人说得对.不过对于数目可能没实际测过.我是做过比较长的SQL语句的,大致有些印象,对于ID来说,一般不会是超过12个字符长度的,所以基本可以20为一组.
回复
flyylf 2006-03-16
楼上老兄,批处理大概怎么做?请教.
回复
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2006-03-16 11:57
社区公告
暂无公告