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

      

  • 相关阅读:
    从零开始学 Web 之 Vue.js(一)Vue.js概述,基本结构,指令,事件修饰符,样式
    从零开始学 Web 之 Vue.js(二)过滤器,按键修饰符,自定义指令
    js获取某个时间段前多长时间
    Object.create()详解
    React Redux
    react 路由按需加载
    react @types/react-router-dom报错
    create-react-app 创建react ts项目启动报错
    十进制转二进制、八进制、十六进制(js)
    代码编辑器设置自定义提示
  • 原文地址:https://www.cnblogs.com/xiaozw/p/11286816.html
Copyright © 2011-2022 走看看