学写了一个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,让其效率提高?谢谢
解决方案 »
- oracle 如何查询所有的,自定义角色
- asp.net 远程连接 oracle 不安装客户端可以嘛?
- oracle断开当前用户所用会话,语句怎么写?
- oracle 不能插入值,请问是什么原因
- 请教:Oracle做全外连接的表的个数,是否有限制
- 问一SQL语句 ~~~~急!!! 在线等!!!!!
- 请问大家这个sql语句怎么写呢
- sql语句,简单问题,急,解决马上给分。
- oracle 中用户和用户的表之间的关系
- 拜托大神,把这段SQL翻译成存储过程
- 求sql优化建议,急 ,急 !
- ORA-12528: TNS:listener: all appropriate instances are blocking new connections
2)如果a,b 表都很大的话,用in和exists是感觉不出来区别的
3)不要用NOT EXISTS ,可否试着用外连接来实现该功能?
4)pid上是否建立了索引等