消息关闭
    暂无新消息!
请问如果数据量大的话,这条sql可以怎样优化效率高?
delete from table1 where pid not in(select id from table2)

select * from table1 where pid not in(select id from table2)

4个回答

︿ 1
select * from table1 a  where not exists (select 1 from table2 b where a.pid=b.id)
︿ 0

创建临时表,走索引
create table temp_1 as 
select /*+ parallel(a,20)*/
 a.id
  from table2 a;

create index idx_id on temp_1(id) parallel 20;

select /*+ index (b)*/
 *
  from table1 a
 where a.pid not exists (select 1 from temp_1 b where a.pid = b.id)
︿ 0
delete mytable 
where pid in(
select id from t2
minus
select pid from mytable


PS:一定要多重方法反复测试。
︿ 0
select * from table1 a  where not eists (select 1 from table2 b where a.pid=b.id)