首页 > 解决方案 > ORA-02395: 超出了 IO 使用的调用限制并使用游标作为替代

问题描述

我有一个 PLSQL 查询MINUS

 select id from small_table where col ='xxx' 
     MINUS 
select id from large_table;

large_table 有139070行,small_table 有7459行。我ORA-02395: exceeded call limit on IO usage在执行时得到。我试过用MINUSandnot in替换not exists。我已阅读有关该错误的信息,但无法与之协商DBA更改LOGICAL_READS_PER_CALL。现在,我可以使用 2 个游标从 2 个表中获取数据,然后在其中执行MINUS等效逻辑PLSQL吗?或者我会ORA-02395用游标逻辑得到什么。或者我可以重写查询本身?

此外,使用游标可以获取的最大行数是BULK COLLECT INTO多少table OF ***

标签: oracleplsqloracle11gdatabase-cursor

解决方案


你可以试试这个:

select s.id
from small_table s
left join big_table b
on s.id = b.id
where b.id is null
and s.col = 'xxx'

推荐阅读