表A 表B 表C
从A表中查出与B表或C表兄的ID
select id from A where id in(select id from B) or id in(select id from C);不知道对不对,执行效率好低 怎么写才能高效
从A表中查出与B表或C表兄的ID
select id from A where id in(select id from B) or id in(select id from C);不知道对不对,执行效率好低 怎么写才能高效
解决方案 »
- 定期数据比对实现
- ORA-00909 invalid number of arguments 问题
- BLOB的问题
- grouping-rollup-ROW_NUMBER-over-PARTITION相关技术求助(第三贴)
- 大家替我看看一条SQL能解决不?感觉有点麻烦
- 怎么得到用户下的所有表名和注释
- 关于数据库同步软件-哪位有好的介绍?--在线等待
- 创建了一个序列,怎么使这个序列作用于其中一个表?
- oracle 打包问题!在线等待!马上给分!
- 在http://otn.oracle.com/software/products/oracle9i/content.html可以下载的oracle9i是否可用?
- oracle 有那个函数或什么办法解决繁体转简体字,谢谢
- plsql输入参数
需要3个id都建索引,可能会大幅提高你的速度
up, exists的效率要比in 高。 Oracle SQL的优化
http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4672023.aspx
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
union
select a2.id from A a2, C c1 where a2.id=c1.id按2楼说的,用union比 or效率高,当然你的前提是 id是索引字段
1.
id 加索引
2.
别用in 效率最低
3。
select id from a where exists(select 1 from b where a.id=b.id) or exists(select 1 from c where a.id=c.id) select id from A,B,C where A.id=B.id(+) and A.id=C.id(+) and B.id is not null and C.id is not null
然后再看看执行计划。哪个好
当然有时候不用索引会比用索引快,这个自己慢慢学习掌握吧