学写了一个SQL,都是用IN的,发现效率非常低。EXISTS不太会用。
有A、B两个表,A(pid,name),B(cid,pid)。
现在要做的就是对A表进行筛选,如果A表中PID不在B表中,那么就把A表中的这条数据删掉。
DELETE FROM A a WHERE a.pid in(select b.pid from A b where b.pid not in(select c.pid from B c))哪位高手能不能帮我重写一下这个SQL,让其效率提高?谢谢
有A、B两个表,A(pid,name),B(cid,pid)。
现在要做的就是对A表进行筛选,如果A表中PID不在B表中,那么就把A表中的这条数据删掉。
DELETE FROM A a WHERE a.pid in(select b.pid from A b where b.pid not in(select c.pid from B c))哪位高手能不能帮我重写一下这个SQL,让其效率提高?谢谢
解决方案 »
- win7下oracle安装出现的问题
- 11G导出空库
- 我安装了一个oracle client,但是服务界面里面没有启动项,我如何启动oracle监听服务?
- java 调用oracle存储过程建表出错,求解
- ORACLE中字段id自增长在IBATIS和HIBERNATE中分别如何实现?
- oracle 查询中符号||是什么意思?
- Ora-01571:重做版本8.1.6.0.0 与oracle8.0.5.0.0不兼容,是怎么回事?谢谢..急
- 请问哪里有Oracle 10g正式版的下载?
- 触发器问题?
- 假如我把临时表空间改成永久表空间会对系统产生怎样的影响?
- 求sql优化建议,急 ,急 !
- ORA-12528: TNS:listener: all appropriate instances are blocking new connections
2)如果a,b 表都很大的话,用in和exists是感觉不出来区别的
3)不要用NOT EXISTS ,可否试着用外连接来实现该功能?
4)pid上是否建立了索引等