Oracle查询in超过1000条无法处理 Bertha 。 2023-01-03 01:44 137阅读 0赞 ## 场景 ## 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以内了 } }
还没有评论,来说两句吧...