Oracle查询in超过1000条无法处理

场景

Oracle查询in超过1000条无法处理,这是oracle本身的特性,所以只能改逻辑或改业务。

解决方案

拆分为多个1000条以内查询,然后union all

可行,这是从代码层面来优化。

从设计上进行优化

例如权限配置,有几千个机构,采用扁平形式可能会有这个问题。
可用办法:
1、设计超级帐号,避过冗杂的权限设计。
2、设计权限层级,例如上级机构自动用有下级机构的权限,那么只需配置一个上级机构,就可以拥有多个子级的权限。

将in的list进行拆分,分批进行处理

java代码:

if(userList.size() > 500){
    int count = 0;
    while(count<userList.size()) {
        int countNext = count + 500;
        if(countNext > userList.size()) {
            countNext = userList.size();
        }

        // handle 这样一次传入的条数就在500以内了

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值