一个执行了600多秒的查询,我快疯了... select a.xxx from a,bwhere a.xxx=b.xxx and not in (select xxxx from b)这样稍微能快些.不过还有更好的方法的. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先试试这句select xxx from a where xxx in ( select xxx from c minus select xxx from b ) 不行的话可以使用如下如果c与b中xxx唯一性很高的话,在两表对xxx字段建B*索引如果重复性很高,建位图索引 select a.xxx from a,b,c where a.xxx=c.xxx and a.xxx<>b.xxx 在三张表的xxx列上建索引. dinya2003(dinya 11i) :SQL有错误,这样会产生大量记录 同意 dinya2003(dinya 11i) 的作法. dinya2003(dinya 11i) 方法不错 其实现在的not in早已经被优化过了,oracle,sybase都会将not in 看成exists字句,所以最好的办法可以在b , c 表对xxx建索引.dinya2003(dinya 11i)的方法是有问题的连接表的时候一般都不会用不等于方式,这样会选出几百万行数据,如果a有a有记录12 3b有记录3 45c有记录 3本来按楼主需要是没有一条记录,如果用diny2003的将会选出33因为3<>4 3<>5 试试select xxx from a where not exists(select 1 from b where a.xxx = b.xxx)and exists (select 1 from c where a.xxx = c.xxx) dinya2003(dinya 11i) 的方法试过了,查出6千余万条记录,可怕 非常感谢各位相助,sjun66(无处不在) 的sql结果正确,用时15秒,终于搞定了 oracle中事务处理 oracle怎么获取exception信息 timesten 的TNS name 一个包问题 请问oracle10g有内置apache服务器么? 这样的查询怎么写? Oracle安装的问题 关于表空间(奇怪) 这样写游标能与查询的顺序对得上吗?老是提示文字与格式字符串不匹配,检查过几次,该是日期的就是日期的啦 oracle 表加锁问题 查看对数据库中那些表进行了操作 在sql里将两个select进行合并和进行交集应该怎么做?
select xxx from a where xxx in ( select xxx from c minus select xxx from b )
不行的话可以使用如下如果c与b中xxx唯一性很高的话,在两表对xxx字段建B*索引
如果重复性很高,建位图索引
在三张表的xxx列上建索引.
SQL有错误,这样会产生大量记录
连接表的时候一般都不会用不等于方式,这样会选出几百万行数据,如果a有
a有记录
1
2
3b有记录
3
4
5c有记录
3
本来按楼主需要是没有一条记录,如果用diny2003的将会选出
3
3
因为3<>4 3<>5
select xxx from a
where not exists(select 1 from b where a.xxx = b.xxx)
and exists (select 1 from c where a.xxx = c.xxx)