oracle中的in参数超过1000的解决方案

在oracle中,使用in方法查询记录的时候,如果in后面的参数个数超过1000个,那么会发生错误,JDBC会抛出“java.sql.SQLException: ORA-01795: 列表中的最大表达式数为 1000”这个异常。比如执行select * from table where id in (1, 2, ..., 1000, 1001, .....,1999)时。
在网上搜了一下,解决方案都是将参数分段,即select * from table where id in (1, 2, ..., 1000) or id in(1001, ....., 1999)。
但是这种方式感觉效率太低,当参数特别多的时候可能非常慢。

一.如果可以将in的语句优化成exists,那么最好,因为数据量较小的时候用in,效率高。数据量比较大的时候,用exists效率高。

二.一不成立,那么也可以将参数存放到一张临表中,用字段关联查询。

posted @   折翼流萤  阅读(3940)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示