如何更快速的查询1000条数据?

百八烦恼风 百八烦恼风 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现在的需求是这样的,我有一个模板,里面是JsonArray数据,里面有1000条JSONObject,每个object都有一个客户和产品属性,形如这样
{"data":[{"account":"01","product":"p1"},...]}

我现在要解析这个JSON,根据每一个object里的客户和产品,到另一个表里来查询它的平均销量和平均单价,
然后返回一个加了平均销量和平均单价的data,就是这样
{"data":[{"account":"01","product":"p1","avgNum":111,"avgPrice":222},...]}

我现在的做法是循环data,取出每个object,然后取出object的Account和Product,然后到一个查询方法里查询取得数据后,
object.put("avgNum","")...
;
这样一番下来,整个过程耗时26秒,可以说非常慢,另附上我的查询方法

String sql="SELECT avg(il.UnitPrice),sum(il.Quantity)/12 FROM Invoice i LEFT JOIN InvoiceLineItem il " +
"ON i.InvoiceId=il.InvoiceId " +
"LEFT JOIN Product p ON p.ProductId=il.ProductId "+
"LEFT JOIN Account a ON i.AccountId=a.AccountId "+
"WHERE datediff(m,InvoicedOn,getDate())<=12 " +
"AND p.ProductNumber=? AND a.AccountName=? ";
...
for(int i=0;i<jArray.size();i++){
JSONObject o=jArray.getJSONObject(i);
if(o.isEmpty())
break;
ps.setString(1,o.getString("product"));
ps.setString(2,o.getString("account"));
rs=ps.executeQuery();
Map map=new HashMap<String,String>();
map.put("$$avgPrice",0);
map.put("$$avgNum",0);
while(rs.next()){
map.put("$$avgPrice", rs.getDouble(1));
map.put("$$avgNum", rs.getDouble(2));
}
o.putAll(map);
}
不知道各位有什么好的主意,集思广益,
...全文

相关推荐

评论 20
收藏 已收藏
分享
返回顶部
百八烦恼风
Web 开发 81,108 成员 341,721 内容