有两表a和表b
两表结构相同,如何优化比较显示b表中不存在的记录
id是主键a:
id name ....
--------------
1 aaa
2 bbb
3 ccc
4 ddd
5 32a
6 4s2
7 433b:
id name ....
------------
1 aaa
2 bbb
3 ccc
4 ddd得到的结果为id name ....
------------5 32a
6 4s2
7 433如何优化?现在使用 select * from a where not exists (select * from b where a.id=b.id)
有什么方法可以提高效率.
两表结构相同,如何优化比较显示b表中不存在的记录
id是主键a:
id name ....
--------------
1 aaa
2 bbb
3 ccc
4 ddd
5 32a
6 4s2
7 433b:
id name ....
------------
1 aaa
2 bbb
3 ccc
4 ddd得到的结果为id name ....
------------5 32a
6 4s2
7 433如何优化?现在使用 select * from a where not exists (select * from b where a.id=b.id)
有什么方法可以提高效率.
解决方案 »
- java传递oracle数组:Non supported character set: oracle-character-set-867
- ORACLE WRAP PLS-00114
- 能否写一种程序点击直接生成oracle固定的数据库和表,方便用户安装操作
- 如何在windows下运行sql loader工具
- oracle表中数据修改问题
- 用什么函数可以取出一个表的所以索引和索引的表达式??
- 字符型的字段与日期如何高效的进行比较
- exp和imp到底需要什么样的用户才行呀
- 求教Unixware下proc的makefile写法
- 问一个SQL的语句
- 关于char长度的定义
- 查询一个表中相同的数据的SQL,菜鸟,在线等
minus
select * from b
where a.id = b.id(+)
and b.id is null
where not exists
(
select 1 from b
where a.id=b.id and a.name=b.name
)
select * from a where a.id not in(select distinct id from b);你可以查看一下该两条语句的执行计划,就可以看出那条语句的效高了。
打开执行计划:set autotrace on;不过一般来说,如果外边表大,里边表小用in,反之用exists。
select * from a where id not in (select id from b)