oracle in 条件超长问题解决
今天做了个es查询地址条件的需求,在回传给使用应用的过程当中,使用的应用出现了错误:in的条件中多于1000个表达式数会报ORA-01795的提示错误。接下来将in中的条件拆分,超过1000的用Or连接,发现in的效率非常低下。后来搜索到如下的回答之后,修改之后解决:
优化的方法就是id字段加索引,几百万还不算多,加个索引,就可以很快了。 但是不能使用in,因为in是不走索引的。可以将in改为or,select * from A where id='1' or id='2' or id='3'..... 前提是你只用id查询哦,如果有其他条件就将所有条件都加到索引中。