SQL的效率问题 目的:从表A中找出ID在表B中但不在表C中的记录方法一:select * from A where ID in B and ID not in C方法二:select * from A where ID in (B-C)那种方法比较高效率??其实就是in+not in的组合 与 minus 哪个效率高?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 方法二:select * from A where ID in (B-C) 表扫描的次数比较小 还可以用外关联,效率也很高,但是所有的ID都要有索引SELECT a.id FROM a JOIN b ON(a.id=b.id) LEFT OUTER JOIN c ON(a.id=c.id) WHERE c.id IS NULL; 如果ID不是主键,ID重复率比较高,效率很低 用EXISTS替代IN在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. select * from A inner join B on A. ID = B.ID where not exists ( select 1 from C where C.ID = A.ID); select * from a,b,cwhere a.id=b.idand b.id=c.id(+)and b.id is null;这样效率较高 oracle添加非空制约 用ORAOLEDB.oracle1驱动读LONG类型的字段有问题 触发器问题 SQL文件执行错误 关于输出EXCEL报表的一个存储过程 表的自连接问题。 100分求救,请问客户端打包 “很麻烦的查询!” 请教个SQL的问题! 如何实现查找一个表的关键字…… 如何在9i的Oracle Management Server中添加10g的数据库?? oracle读写文本文件
FROM a JOIN b ON(a.id=b.id)
LEFT OUTER JOIN c ON(a.id=c.id)
WHERE c.id IS NULL;
如果ID不是主键,ID重复率比较高,效率很低
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率.
on A. ID = B.ID where not exists (
select 1 from C where C.ID = A.ID);
select * from a,b,c
where a.id=b.id
and b.id=c.id(+)
and b.id is null;这样效率较高