一. 背景:

小熙最近做的数据检索比较大,其中会使用到,in的条件会有超过1000条。但是in所支持的条件数量最多只有1000,那怎么办呢,后来小熙采取了分区检索,完成了。

二. 引入依赖:

  1. 引入apache的工具类坐标,下面会引用其中的集合分区api

            <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.3</version></dependency>
    

三. 实现代码:

  1. 使用apache工具类,将条件集合分区(下面第二个参数500,是每个分区的最大个数)

    List<List<String>> partitionList = ListUtils.partition(Lists.newArrayList("被分区的条件集合"), 500);
    
  2. 查询
    可以使用多次查询也可以分线程查找等,这里小熙由于需求需要,所以要一起判断,
    使用了xml中的双重for循环组成了多个in的or连接:

            <if test="searchDTO.user != null"><if test="searchDTO.user.supplierDTO != null"><if test="searchDTO.user.supplierDTO.partitionList != null and searchDTO.user.supplierDTO.partitionList.size != 0">and<foreach collection="searchDTO.user.supplierDTO.partitionList" index="indexList" item="partitionSet"open="(" separator=" " close=")"><if test="partitionSet != null and partitionSet.size != 0"><if test="indexList != 0">or</if>numbering in<foreach collection="partitionSet" index="indexSet" item="partitionNumber"open="(" separator="," close=")">#{partitionNumber}</foreach></if></foreach></if></if></if>
    

四. 结言:

解决方案有很多,其中的处理手段也有非常多。具体可以根据业务场景和系统抉择下,这里小熙只是提供一个想法思路。

sql查询in条件超过1000条解决方案相关推荐

  1. Oracle数据库查询用 where in 查询的项超过1000条的解决方案

    众所周知,如果我们的用SQL查询语句时,如果用where in带的参数超过1000条的话,oracle是会报错的. 因为项目中遇到这样的问题,所以找到了接下来我要说的这个办法. 因为用的地方很多,所以 ...

  2. Oracle1401和1438,Oracle SQL in 超过1000的解决方案

    起因: 代码程序由于设计问题,采用了效率不太高的oracle 的in语句,当条件超过1000之后oracle会抛出ora-01795: 经过: 1,oracle中如果非要用in作为条件的话,超过100 ...

  3. access 查询符合条件的第一条记录

    有个定时上传数据库中某些记录的需求. 定时任务中,如果查出所有符合条件的数据并上传,如果数据过多,可能不易处理,那么就限定每次只查询符合条件的一条或几条记录.经测试,access中SQL写法举例如下: ...

  4. 处理 Oracle SQL in 超过1000 的解决方案

    处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错. 这主要是oracle考虑性能问题做的限制.如果要 ...

  5. oracle的in的值超过3000,处理 Oracle SQL in 超过1000 的解决方案

    http://www.cnblogs.com/hoojo/archive/2012/08/31/2665396.html hoojo的这篇博文里面,介绍了处理Oracle SQL in超过1000的解 ...

  6. mysql查询结果随机取一个_从SQL查询结果随机取一条数据

    最近工作中会涉及复杂的SQL语句,还是挺有意思的.以前想写没有应用场景,现在正好可以多锻炼锻炼.我觉得在实际开发中,程序代码并不是最难的,最难的还是SQL.SQL逻辑性最强,而且还要很清楚表设计,业务 ...

  7. sql 查询重复数据大于2条以上的_「干货」关于SQL书写建议 索引优化的总结,你值得拥有...

    前言 平时写sql写的比较多,一直没把优化相关的知识整理记录下来,本文章记录对SQL优化的一些技巧: 我将结合demo(一个百万级数据表),去实践验证这些优化技巧. 测试用例 接下来,我们创建一个测试 ...

  8. SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)

    主要用到sql 函数 DATEDIFF(datepart,startdate,enddate) sql 语句,设 有 数据库表 tableA(日期字段ddate) --查询 今日 select * f ...

  9. sql查询最新时间的一条数据

    先查询最大的时间: select max(time) from table 再把根据查询的时间作为添加条件查询表格 select * from table where time = (select m ...

最新文章

  1. Java项目:家居购物商城系统(java+html+jdbc+mysql)
  2. 微信 登录 Scope 参数错误或没有 Scope 权限
  3. 洛谷 - P3389 【模板】高斯消元法(高斯消元解方程)
  4. linux 记事本程序,Linux记事本操作
  5. 控制JSP头部引入外部文件编译后在第一行
  6. python向量化编程技巧_Python学习(六)向量化
  7. 过去几小时,以太坊2.0信标链主网超过75位验证者被Slash罚款
  8. vpp之node节点分析二: qs类型
  9. matlab如何求开方,matlab中开方怎么表示
  10. C语言用什么 IDE 好 - 除了 Visual Studio、VSCode、CLion 还有什么其他选择?
  11. 进化算法之粒子群算法介绍附代码——PSO
  12. 关于ubantu安装cmake
  13. 《Real-Time Rendering 4th Edition》全文翻译 - 第7章 阴影(下)7.7 ~ 7.10
  14. SpringBoot下载Excel文件,解决文件损坏问题
  15. excel 添加垂直竖向直线
  16. 【Yocto学习入门】03 - Yocto 代码初步了解
  17. STATA如何保留和删除变量或者观测值
  18. you-get下载b站选集_Flash选集:酷炫效果和实用的ActionScript-第1章:Flash基本知识
  19. 华为CodeCraft2018 周进展
  20. 利用 MSYS2 及osgEarth 构建三维地球模型(2) osgEarth 与 Qt的结合

热门文章

  1. 软件技术部第一次机器学习培训
  2. 什么是Java面向对象OOP
  3. sap 中怎样把非限制库存转为销售订单库存?
  4. Android To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(),
  5. python调用默认播放器_python使用Tkinter实现在线音乐播放器
  6. SQL查询结果加序列号
  7. qt windows ble低功耗蓝牙
  8. PKI 公钥基础设施
  9. 电子电路学习笔记(6)——电阻的作用
  10. Ridge Regression and Kernel Ridge Regression