oracle数据库中,如果你使用in,然后括号对应的是一个子查询,当查询出来的结果>1000的时候就会报错。

这个是数据库的规定,我们无法改变它。

如何解决这个问题呢?

现在我看到了三种解决方式:

1、使用in限制范围为1000,那么就使用多个in拼接。

  1. in (x,x,x) or in (y,y,y) or in ...

这种方法我尝试过,感觉最不好用,如果数据量小的话ok,我哪里才几万条数据就卡,相当于执行多条sql语句。

别人的评价:

  1. 一般来说,不建议使用很复杂的sql语句。可以简单的认为,sql语句执行的时间复杂度与sql语句的长度相关。
  2. in太多,在数据量过大的时候,可能就不是慢的问题了,而是sql执行线程locked
  3. 常见的处理方式,是将“条件部分符合”的数据一次性全从数据库中拿出来,然后在代码中,遍历这些记录,找出符合条件(in条件)的记录。充分利用服务器的计算能力,以期减少数据库的压力。

2、使用临时表,将in中的内容查询插入临时表中。然后子查询进行匹配。这个我没有尝试。有空试试。

前面以为in对应子查询如果里面的内容>1000会报错,尝试了一下,不报错。

  1. select * from mpmerdtl where agent_ID in(select member_id from mpagent)

3、不要使用in关键字,直接使用表连接。个人感觉这种是速度最快的一种。我出现这问题的时候解决方式就是手写的sql。

left join...

感觉这样看来解决的三种方案,第一种是因为in的数据是集合,不是表中的,所以拆分成1000以内的n个集合进行查询拼接。第二种子查询,第三种连接查询。

欢迎大家见解!

mybatis中oracle in>1000的处理的更多相关文章

  1. mybatis中Oracle分页语句的写法

    最近一段时间使用oracle数据库查询分页, 用的是springboot. Oracle数据库中没有像mysql中limit的写法, 只能换其他方式写. 考虑到oracle中的ROWNUM变量, 使用 ...

  2. mybatis中oracle转mysql

    刚来公司实习,遇到的第一个任务就是这个,简单记录一下思路过程.人菜的很,没啥参考价值. 测试时: 将现有的oracle库转为mysql: 用的Navicat自带数据传输功能,简单粗暴 出现的问题: 1 ...

  3. mybatis中oracle实现分页效果

    首先当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致 ...

  4. mybatis中Oracle及mysql插入时自动生成主键以及返回主键

    mysql的方式: 方式一: useGeneratedKeys="true" keyProperty="id" 方式二: <selectKey keyPr ...

  5. Mybatis中oracle如何批量insert语句

    <insert id="batchInsertNoticeUser" useGeneratedKeys="false" keyProperty=" ...

  6. Mybatis中实现oracle的批量插入、更新

    oracle 实现在Mybatis中批量插入,下面测试可以使用,在批量插入中不能使用insert 标签,只能使用select标签进行批量插入,否则会提示错误 ### Cause: java.sql.S ...

  7. ORACLE中关于使用between在MyBatis中取不同的区间值和取反

    最近在项目中使用between取不同的区间值问题,由于区间跨度大,而且区间多,又是前端传过来的参数,所以使用in和exists比较麻烦.然后就考虑使用between.现将使用方法记录一下. 假如表有个 ...

  8. Mybatis在oracle数据库中插入数据后返回自增值ID

    1.将id设置成自增序列 CREATE OR REPLACE TRIGGER "DATALIB"."TRIG_USER_ADD" BEFORE INSERT O ...

  9. MyBatis在Oracle中插入数据并返回主键的问题解决

    引言:  在MyBatis中,希望在Oracle中插入数据之时,同一时候返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle. Spring 3.2   SQL Snipp ...

随机推荐

  1. Convention插件 struts零配置

    http://blog.csdn.net/spyjava/article/details/13631961系列课程使用 注解:http://www.yiibai.com/struts_2/struts ...

  2. graph-tool文档(一)- 快速开始使用Graph-tool - 2.属性映射、图的IO和Price网络

    目录: 属性映射 -- 内部属性映射 图的I/O 构建一个 Price网络(例) 名词解释: Property maps:属性映射 PropertyMap:一个类 scalar value types ...

  3. php面向对象Object

    1.创建类 class 类名{ private 私有变量 只能本类的内部使用 protected 受保护的变量 本类和子类的内部 public 公开的变量 都可以使用 一般属性都设为私有 一般函数都是 ...

  4. [maven] 搭建多模块企业级项目

    知识点:聚合.继承.工程依赖.单元测试.多war聚合.cargo发布 ① 准备工作 参考资料 http://www.cnblogs.com/quanyongan/archive/2013/05/28/ ...

  5. 《Java程序设计》实验三 实验报告

    实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2 ...

  6. js一些题目

    假期在家,看到的,昨天看了下: 原文链接:http://wwwcqamin.duapp.com/?p=102#comment-7 请说出下面程序的输出结果 第一题: 1 2 3 4 5 6 7 8 9 ...

  7. (16)odoo8 API 指南

    http://odoo-new-api-guide-line.readthedocs.org/en/latest/index.html

  8. Hibernate映射之实体映射

    1.使用@注解配置实体类 实体类一般有ID.普通属性.集合属性等,分别对应数据库的主键.普通列.外键.@注解配置中,实体类用@Entity注解,用@Table指定对应的数据表,用@Id配置主键,用@C ...

  9. 一个.net mvc的例子

    控制器 ( Controller) Product 下面功能主要根据多条件搜索产品的列表的功能 public ActionResult ProductList(string cityID, strin ...

  10. WebDataTree 使用XML做数据源绑定数据

    英文版原文链接:http://www.infragistics.com/help/topic/e5f07b51-ee2d-4a33-aaac-2f43cffff327 所使用的控件版本为:Infrag ...