oracle - 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
在执行时得到。我试过用MINUS
andnot in
替换not exists
。我已阅读有关该错误的信息,但无法与之协商DBA
更改LOGICAL_READS_PER_CALL
。现在,我可以使用 2 个游标从 2 个表中获取数据,然后在其中执行MINUS
等效逻辑PLSQL
吗?或者我会ORA-02395
用游标逻辑得到什么。或者我可以重写查询本身?
此外,使用游标可以获取的最大行数是BULK COLLECT INTO
多少table OF ***
。
解决方案
你可以试试这个:
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'
推荐阅读
- oracle - oracle存储过程中如何传递多个参数
- php - 服务器没有通过 API 响应多个请求
- linux - 如何在 google colab 中安装 bash 片段?
- sql - MSSQL为一周中的每一天选择带有日期时间的行
- javascript - 续集更新多行
- postgresql - 使用给定日期拆分开始日期和结束日期
- python - `Deck` 对象没有属性 `all_cards`
- javascript - 我们需要借助类转换器将 JS 对象反序列化为模型模式
- python - 在 Python 中将 String() 转换为 c_char 数组
- python - 如何根据列分组重新索引python数据框