码迷,mamicode.com
首页 > 数据库 > 详细

java切分查询数据库表

时间:2019-08-02 13:20:21      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:dal   baidu   def   提取   public   ext   应用   ring   插入数据   

在实际应用中,我经常用到遇到根据单号查询,单号又是批量如1000个单号,直接1000个in子查询是不行的,子查询是用上限的。如果表中数据达到上百万以上。即使有单号字段有索引查询也是很慢。这时可以用切分。把1000个单号切分成,每300个去查询。这样会快很多。下面是demo。

 1 /**
 2      * 准备工作,插入数据,100000条记录。
 3      */
 4     @Test
 5     public void test11() {
 6         for (int i = 0; i < 100000; i++) {
 7             UserInfo userInfo = new UserInfo();
 8             //生成随机数单号(1到100000)。
 9             Random random = new Random();
10             int max = 100000;
11             int min = 1;
12             int s = random.nextInt(max) % (max - min + 1) + min;
13 
14             userInfo.setAge(random.nextInt(90) + 10);
15             userInfo.setName("张三" + i);
16             userInfo.setBillCode("" + s);
17             userInfoMapper.insertSelective(userInfo);
18         }
19     }
20 
21     /**
22      * 查询数据,如查询1000个单号,每300个拆分。最后把结果集合并。
23      */
24     @Test
25     public void test12() {
26         //结果集
27         List<UserInfo> result=Lists.newArrayList();
28         List<String> listSearch = Lists.newArrayList();
29         for (int i = 1; i <= 1000; i++) {
30             listSearch.add(i+"");
31         }
32         //按每300个拆分。只需查询3次数据库,用in查询。
33         List<List<String>> listOne = Lists.partition(listSearch, 300);
34         for (List<String> one : listOne) {
35             UserInfoExample example=new UserInfoExample();
36             example.createCriteria().andBillCodeIn(one);
37             List<UserInfo> oneUserInfo= userInfoMapper.selectByExample(example);
38             result.addAll(oneUserInfo);
39         }
40         //输出
41         for(UserInfo userInfo:result){
42             System.out.println("显示:"+JSON.toJSONString(userInfo));
43         }
44     }

 

 输出:

技术图片

 

 

 

源码下载地址:

链接:https://pan.baidu.com/s/1hFq9DefyFMKgrk06iJylXw
提取码:fx4o

  

 

java切分查询数据库表

标签:dal   baidu   def   提取   public   ext   应用   ring   插入数据   

原文地址:https://www.cnblogs.com/xiaozw/p/11286816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!