我有一个有 2 列的表 - ref_table_id、ref_objid。该表用于引用其他表中的对象。它实际上有超过 2 列,但其他列并不重要。
以下查询需要 1 秒才能执行:
delete from ref_table_id
where (ref_table_id = 1 and
ref_objid not in (select objid from table1))
同样,此查询需要 1 秒才能执行:
delete from ref_table_id
where (ref_table_id = 2 and
ref_objid not in (select objid from table2))
但是,此查询需要 3 分钟才能执行:
delete from ref_table_id
where (ref_table_id = 1 and
ref_objid not in (select objid from table1))
or (ref_table_id = 2 and
ref_objid not in (select objid from table2))
为什么最后一个查询需要这么长时间?它基本上只是前两者的组合。谁能解释一下?
我正在使用甲骨文。
谢谢