sql查询in条件超过1000条解决方案
一. 背景:
小熙最近做的数据检索比较大,其中会使用到,in的条件会有超过1000条。但是in所支持的条件数量最多只有1000,那怎么办呢,后来小熙采取了分区检索,完成了。
二. 引入依赖:
- 引入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>
三. 实现代码:
使用apache工具类,将条件集合分区(下面第二个参数500,是每个分区的最大个数)
List<List<String>> partitionList = ListUtils.partition(Lists.newArrayList("被分区的条件集合"), 500);
查询
可以使用多次查询也可以分线程查找等,这里小熙由于需求需要,所以要一起判断,
使用了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条解决方案相关推荐
- Oracle数据库查询用 where in 查询的项超过1000条的解决方案
众所周知,如果我们的用SQL查询语句时,如果用where in带的参数超过1000条的话,oracle是会报错的. 因为项目中遇到这样的问题,所以找到了接下来我要说的这个办法. 因为用的地方很多,所以 ...
- Oracle1401和1438,Oracle SQL in 超过1000的解决方案
起因: 代码程序由于设计问题,采用了效率不太高的oracle 的in语句,当条件超过1000之后oracle会抛出ora-01795: 经过: 1,oracle中如果非要用in作为条件的话,超过100 ...
- access 查询符合条件的第一条记录
有个定时上传数据库中某些记录的需求. 定时任务中,如果查出所有符合条件的数据并上传,如果数据过多,可能不易处理,那么就限定每次只查询符合条件的一条或几条记录.经测试,access中SQL写法举例如下: ...
- 处理 Oracle SQL in 超过1000 的解决方案
处理oracle sql 语句in子句中(where id in (1, 2, ..., 1000, 1001)),如果子句中超过1000项就会报错. 这主要是oracle考虑性能问题做的限制.如果要 ...
- oracle的in的值超过3000,处理 Oracle SQL in 超过1000 的解决方案
http://www.cnblogs.com/hoojo/archive/2012/08/31/2665396.html hoojo的这篇博文里面,介绍了处理Oracle SQL in超过1000的解 ...
- mysql查询结果随机取一个_从SQL查询结果随机取一条数据
最近工作中会涉及复杂的SQL语句,还是挺有意思的.以前想写没有应用场景,现在正好可以多锻炼锻炼.我觉得在实际开发中,程序代码并不是最难的,最难的还是SQL.SQL逻辑性最强,而且还要很清楚表设计,业务 ...
- sql 查询重复数据大于2条以上的_「干货」关于SQL书写建议 索引优化的总结,你值得拥有...
前言 平时写sql写的比较多,一直没把优化相关的知识整理记录下来,本文章记录对SQL优化的一些技巧: 我将结合demo(一个百万级数据表),去实践验证这些优化技巧. 测试用例 接下来,我们创建一个测试 ...
- SQL 查询--日期条件(今日、昨日、本周、本月。。。) (转)
主要用到sql 函数 DATEDIFF(datepart,startdate,enddate) sql 语句,设 有 数据库表 tableA(日期字段ddate) --查询 今日 select * f ...
- sql查询最新时间的一条数据
先查询最大的时间: select max(time) from table 再把根据查询的时间作为添加条件查询表格 select * from table where time = (select m ...
最新文章
- Java项目:家居购物商城系统(java+html+jdbc+mysql)
- 微信 登录 Scope 参数错误或没有 Scope 权限
- 洛谷 - P3389 【模板】高斯消元法(高斯消元解方程)
- linux 记事本程序,Linux记事本操作
- 控制JSP头部引入外部文件编译后在第一行
- python向量化编程技巧_Python学习(六)向量化
- 过去几小时,以太坊2.0信标链主网超过75位验证者被Slash罚款
- vpp之node节点分析二: qs类型
- matlab如何求开方,matlab中开方怎么表示
- C语言用什么 IDE 好 - 除了 Visual Studio、VSCode、CLion 还有什么其他选择?
- 进化算法之粒子群算法介绍附代码——PSO
- 关于ubantu安装cmake
- 《Real-Time Rendering 4th Edition》全文翻译 - 第7章 阴影(下)7.7 ~ 7.10
- SpringBoot下载Excel文件,解决文件损坏问题
- excel 添加垂直竖向直线
- 【Yocto学习入门】03 - Yocto 代码初步了解
- STATA如何保留和删除变量或者观测值
- you-get下载b站选集_Flash选集:酷炫效果和实用的ActionScript-第1章:Flash基本知识
- 华为CodeCraft2018 周进展
- 利用 MSYS2 及osgEarth 构建三维地球模型(2) osgEarth 与 Qt的结合
热门文章
- 软件技术部第一次机器学习培训
- 什么是Java面向对象OOP
- sap 中怎样把非限制库存转为销售订单库存?
- Android To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(),
- python调用默认播放器_python使用Tkinter实现在线音乐播放器
- SQL查询结果加序列号
- qt windows ble低功耗蓝牙
- PKI 公钥基础设施
- 电子电路学习笔记(6)——电阻的作用
- Ridge Regression and Kernel Ridge Regression