mysql条件多值使用= in效率_mysql 用in做条件,里边有1万多个值时候,如何优化呢...

MYSQL NOT IN优化

8086afdc008c8b27bbbb2cd2d231ea4f.png

算法上存在很大问题。我们先析该算法的执行次数。

按照你的方法,record表中的id字段要全部查询一遍,也就是2W次查询,而每次查询,最坏

情况下需要与offline_record中的rec.id进行4W次比较,这又导致offline_record表的4W次

查询(取rec_id )。假设满足

a.* from record a where a.id not in(select b.rec_id from offline_record);

条件的记录一共有N条,那么,最坏情况下,该算法所做的查询次数为:

2W(取record.id)+2W*4W(每取一次record.id就要取一次offline_record.rec_id且offline_record的最后一条数据满足条件)+N(每

条满足条件的记录需要再在record中取该记录全部数据)

所做的比较次数为:

2W*4w

考虑最好情况下的效率,该算法所做的查询次数为:

2W(取record.id)+2W*1(每取一次record.id就要取一次offline_record.rec_id且offline_record的第一条数据满足条件)+N(N(每

条满足条件的记录需要再在record中取该记录全部数据)

所做的比较次数为:

2W*

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值