zoukankan      html  css  js  c++  java
  • java切分查询数据库表

    在实际应用中,我经常用到遇到根据单号查询,单号又是批量如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

      

  • 相关阅读:
    河北省科技创新年报统计系统分析
    《软件需求十步走》阅读笔记06
    《软件需求十步走》阅读笔记05
    《软件需求十步走》阅读笔记04
    河北科技创新平台年报统计
    《软件需求十步走》阅读笔记03
    《软件需求十步走》阅读笔记02
    《软件需求十步走》阅读笔记01
    案例分析
    2017秋季个人阅读计划
  • 原文地址:https://www.cnblogs.com/xiaozw/p/11286816.html
Copyright © 2011-2022 走看看