mysql在A表中存在B表中不存在的数据sql优化

都知道A表中存在B表中不存在可以使用子查询解决,反正子查询千遍一律,写就完事

举手:

A表中有pid(主键),value(值)两个字段

B表中有cate_id(分类id),pid(A表关联数据),没有主键

结果:B表中cate_id为15的数据A表中不存在

 

就上面问题:反之得A表中所有数据,只要B表存在且cate_id为15的数据都不显示

子查询:

select * from A where (select count(*) from B where cate_id =15 and A.pid =B.pid) = 0

这样效率是不是低下呢为什么

这样也其实不一定低下,子查询使用的迪尔卡积来计算的

如果B表数据关联的越多到时候子查询的效率就体现了,前期子查询的效率可能体现不出来(并没有实际测试,但是使用过纯粹数据做过测试)

那么使用你们日常所觉得关联查询高于100%高于子查询的死亡回答怎么写呢、

select * from A left join B on B.cate_id =15 and b.pid=A.pid where b.pid  IS  NULL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值