mysql in未查到_mysql in查询 查询不到数据

mysql ,表在数据量 很大的情况下,用 in 进行嵌套查询是效率很低的做法,通常出现 查询时间过长或直接数据库挂起,报错。

但 也有两种 解决办法:

原 查询:SELECT * from oms_contract where id

in (select contract_id from oms_contract_apply where customer_id='2c935b814959bcf5014959cef5ec0003');

解决方法一:SELECT * from `oms_contract` where id

in (select contract_id from (select contract_id from `oms_contract_apply` where customer_id='2c935b814959bcf5014959cef5ec0003'  ) as arr);

解决方法二:SELECT * FROM `oms_contract` o INNER JOIN `oms_contract_apply` a ON o.id=a.contract_id where a.customer_id='2c935b814959bcf5014959cef5ec0003';

或者

SELECT * from oms_contract o,oms_contract_apply a where o.id=a.contract_id AND a.customer_id='2c935b814959bcf5014959cef5ec0003';

在执行时间 上,第二种更优于第一种。如果嵌套子查询 应尽量避免用in ,如果 是 常量 集合,用 in 也 并不影响查询效率。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

困困斐

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值