用什么方法可以提高Not in的效率?

zxcht 2007-01-19 01:19:39
分别有两个表A和B,表B中的记录包含表A中的记录,且比表A多。如何查找出表B中不存在于表A中的记录。

用not in可以找出,但是效率太低了,如果涉及表A、表B记录量很多的话,更是跑不出来。
例如 :
select B.* from A,B where B.key_id not in (
select A.key_id from A
)

有其他高效的方法吗?外联?NOT Exist?
...全文
499 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2007-01-22
  • 打赏
  • 举报
回复
a.key_id=b.key_id(+)
and b.key_id is null
是最快的方法
datacodecat 2007-01-21
  • 打赏
  • 举报
回复
不好意思提示写错了,记住了。只有在数据量很大的时候才使用提示,这样才可以邮箱的改变执行计划。
select /*+ use_hash(a,b)*/
b.*
from a,b
where a.key_id=b.key_id(+)
and b.key_id is null
datacodecat 2007-01-21
  • 打赏
  • 举报
回复

select /*+ hash_join (a,b)*/
b.*
from a,b
where a.key_id=b.key_id(+)
and b.key_id is null
qiyousyc 2007-01-19
  • 打赏
  • 举报
回复
更改为exits速度会快上很多的。
最好建立索引
lee_billiy 2007-01-19
  • 打赏
  • 举报
回复
select B.* from B where not exists (
select 1 from A where A.key_id=B.key_id);
因为not in没办法使用到索引,而改成not exists后就可以,但有个前提:表A,B上的key_id列上要有索引,这样执行的速度才会快
intotheheart 2007-01-19
  • 打赏
  • 举报
回复
select B.* from B
minus
select B.* from A,B where A.keyid=B.keyid
tgm78 2007-01-19
  • 打赏
  • 举报
回复
不行,key_id都加上索引或者主键
tgm78 2007-01-19
  • 打赏
  • 举报
回复
select B.* from A,B where not exists (
select A.key_id from A where A.key_id=B.key_id);
代码下载链接: https://pan.quark.cn/s/90fbf78c3289 "1元云购"是一种依托互联网的购物方式,用户仅需投入微小的资金(一般为一元)便有机会赢取高价值商品。此类模式常借助抽奖机制来判定获胜者,从而吸引众多用户加入。"1元云购源代码"是承载该业务流程的程序代码,其用途在于搭建一个完整的1元云购系统。 在构建1元云购源代码的过程中,主要包含以下几个核心技术要点: 1. **数据库架构**:为了有效存储商品详情、用户资料、交易历史及开奖结果,必须设计科学合理的数据库框架。这包括商品数据表、用户信息表、订单记录表和开奖记录表等,确保数据的统一性与完整性。 2. **支付渠道对接**:1元云购平台需与第三方支付服务(例如支付宝、微信支付)进行对接,以实现用户的在线支付操作。这涉及API接口调用、交易状态同步、退款流程管理等环节。 3. **随机数生成策略**:抽奖过程的核心在于公平透明地选定获奖者,通常采用随机数生成策略来实现。该策略需保障每位参与者拥有相等的获奖机会,同时防止欺诈行为。 4. **用户界面开发**:卓越的用户体验是吸引参与者的关键因素。前端页面应兼具视觉吸引力与操作便捷性,清晰展示商品信息、购买步骤、中奖规范等,并提供用户注册、登录、查询订单等功能。 5. **服务器程序设计**:后端系统负责处理用户请求,如管理订单、计算中奖号码、更新数据库信息等。这部分通常采用PHP等服务器端技术实现,需应对并发访问与高负载情形。 6. **安全措施**:1元云购平台可能面临恶意攻击,例如SQL注入、XSS跨站脚本攻击等。因此,源代码需遵循安全编程准则,对用户输入进行过滤与校验,同时运用HTTPS等加密手段保障数据传输安全。 7. **...

17,133

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧