`

sql in 语句最大上限1000

阅读更多
   当我们用sql in语句进行查询时候。Oracle默认支持in中的数量为1000.
这也是为了sql的性能处理,因为in 的性能本来就不很好。所以遇到这种情况最好是通过关联查询进行处理。如果关联查询不能实现你的逻辑,就抛弃性能吧。拼接sql吧。可以通过 or in 进行实现(不推荐)
  其中进行拼接方法:
	private static String getOracleSQLIn(List<?> ids, int count, String field) {
	    count = Math.min(count, 1000);
	    int len = ids.size();
	    int size = len % count;
	    if (size == 0) {
	        size = len / count;
	    } else {
	        size = (len / count) + 1;
	    }
	    StringBuilder builder = new StringBuilder();
	    for (int i = 0; i < size; i++) {
	        int fromIndex = i * count;
	        int toIndex = Math.min(fromIndex + count, len);
	        String productId = StringUtils.defaultIfEmpty(StringUtils.join(ids.subList(fromIndex, toIndex), "','"), "");
	        if (i != 0) {
	            builder.append(" or ");
	        }
	        builder.append(field).append(" in ('").append(productId).append("')");
	    }
	    return StringUtils.defaultIfEmpty(builder.toString(), field + " in ('')");
	}
分享到:
评论

相关推荐

    系统内存不足解决方案

    当你在Windows中纵横驰骋时,是否遇到过“内存不足”的错误提示信息,而不能运行程序或完成所需操作的情况?此时,愿下述的六种方法能为你解燃眉之急。 一、剪贴板占用太多的内存 二、运行的程序太多 ...

    SqlServer数据库提示 “tempdb” 的日志已满 问题解决方案

    执行sql 语句,中间没有用到临时表 提示服务器: 消息 9002,级别 17,状态 2,行 1 数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。 网上找了下解决方案,大体是扩大临时库的日志文件...

    SQL SERVER 2000开发与管理应用实例

    3.6 字符串在动态Transact-SQL语句中的应用 85 3.6.1 动态Transact-SQL语句概述 85 3.6.2 字符串在编号查询中的使用 87 3.6.3 动态参数存储过程 90 3.6.4 动态Transact-SQL语句中常见问题 92 3.7 ...

    快速生成SQL临时表、合并列的高效率辅助Excel

    该工具利用Excel快速生成SQL Server和MySQL的临时表...3、支持多行,行上限为Excel的最大行数。(只需要把结果生成列第三行的公式往后拉即可自动实现内容生成) 4、支持多行数据快速合并成单行模式,支持一键去除双引号

    sqlserver2000基础(高手也有用)

    3.6 字符串在动态Transact-SQL语句中的应用 85 3.6.1 动态Transact-SQL语句概述 85 3.6.2 字符串在编号查询中的使用 87 3.6.3 动态参数存储过程 90 3.6.4 动态Transact-SQL语句中常见问题 92 3.7 text与...

    SQL Server 压缩日志与减少SQL Server 文件大小的方法

    第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复。  1.清空日志  DUMP TRANSACTION 库名 WITH NO_LOG  2.截断事务日志  BACKUP LOG 数据库名 WITH NO_LOG  3.收缩数据库文件  (如果不...

    .net 各种实用方法

    执行SQL语句&lt;/param&gt; 密码&lt;/param&gt; &lt;returns /&gt; &lt;remarks /&gt; - (System.String,System.String)"&gt; 获取Excel 数据&lt;/summary&gt; &lt;param name="iExcelAddress" /&gt; &lt;param name="strSQL1" /&gt; &lt;returns /&gt;...

    必须会的SQL语句(一) 创建数据库与删除数据库

    1.创建数据库 Create database 名称 ... maxsize = 20mb --数据库的空间上限,填写unlimited表示无限制 } log on { name='\u540d\u79f0_log', filename ="c:\xx\名称_log.ldf" size = 5mb, filegrowth =

    宿舍管理系统.zip

    2.查询错误查看sql语句是否缺少逗号 3.背景看不清调整图片 4.宿舍缴费报错看清楚是否关闭的时候重新new新对象 5.填充数据库,一些生日无法从null进行转换 6.身份证输入错误后使其成为焦点 1.登录最大化 2....

    redis缓存技术

    redis是非关系型数据库Nosql的代表,这类数据库主要有以下特点:非关系型的(sql语句对它不起作用,不需要建表存数据,它是直接存储),分布式(主从复制),开源的水平可扩展的。优点:它可以处理超大量的数据,...

    医院预约管理系统(数据库MySQL课设+Java课设)

    (4)科室管理员用户登陆系统后,可以对本科室医生的就诊信息进行添加、删除、修改,医生的就诊信息包括医生编号、就诊时间、就诊人数上限;科室管理员可以查看指定时间段的预约病人信息,并统计本科室医生的预约...

    计算机基础计算机填空题.doc

    数组变 量由变量名和数组下标构成,通常用Dim语句来定义数组,定义格式为:Dim 数组名([下标下限 to] 下标上限) 缺省情况下,下标下限为0,数组元素从"数组名(0)"至"数组名(下标上限)";如果使用 to选项,则可以安排...

    Oracle DBA突击帮你赢得一份DBA职位(完全高清版)1

    5.2 SQL语句的执行过程  5.3 执行计划  5.4 如何阅读执行计划  5.5 小结  第6章 访问路径和连接  6.1 QUBE模型  6.2 单表访问——全表扫描还是索引 6.3 连接  6.4 半连接  6.5 小结  第7章 并行...

    疯狂JAVA讲义

    10.6.3 避免使用Catch All语句 378 10.6.4 不要忽略捕获到的异常 379 10.7 本章小结 379 本章练习 379 第11章 AWT编程 380 11.1 GUI(图形用户界面)和AWT 381 11.2 AWT容器 382 11.3 布局管理器 385 11.3.1...

    MySQL压测工具mysqlslap的介绍与使用

    mysqlslap为mysql性能优化前后提供了直观的验证依据,笔者建议系统运维人员应该掌握一些常见的压力测试工具,这样才能较为准确的掌握线上系统能够支撑的用户流量上限及其抗压性等问题。 二、参数介绍 --auto-...

    mysql数据库my.cnf配置文件

    此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲 #query_cache_limit = 2M #指定单个查询能够使用的缓冲区大小,默认1M key_buffer_size = 1048576 #指定用于索引的缓冲区大小,增加它可得到更好...

    如何将MySQL查询速度提升300倍?

    然后运行代码,执行时间超过设定上限的查询将会被记录到日志中。  一旦定位这些烦人的查询,可以探究慢的原因。MySQL提供了EXPLAIN关键字。可以与SELECT、DELETE、INSERT、REPLACE、UPDATE语句一起使用。只需要...

Global site tag (gtag.js) - Google Analytics