现有 A、B 两个表,A 是用户表(100 万条),B 是绑定设备的表(50 万条),现在要删去过期用户的绑定设备 按正常操作, 直接用 delete from B where B.userid in (select userid from A where 用户会员过期) 这个语句删除会超时,请问怎么操作,sql 咋写效率比较高?
1
roscoecheung1993 2019-02-18 18:59:48 +08:00
sql 不精,yy 一下,用表连接会不会好些? where B.userid = A.userId and 用户会员过期
|
2
lzz2394677796 2019-02-18 19:01:06 +08:00 via iPhone
delete from B where B.userid in (select userid from (select userid from A where 用户会员过期) as tmp)
效率百倍?! |
3
sunnyadamm 2019-02-18 19:08:16 +08:00 via Android
加索引,left join,几千条一提交
|
4
des 2019-02-18 19:43:03 +08:00 via Android
MySQL 的 where in 效率不好,特别是子查询的时候
这个好多人说过了 |
5
qa2080639 2019-02-18 19:46:56 +08:00
in 里面子查询 不使用索引 会很慢
|
6
c6h6benzene 2019-02-18 19:56:03 +08:00 via iPhone
试试 inner join ?
|
7
xuanbg 2019-02-18 20:22:47 +08:00
delete b
from b join a on a.userid = B.userid where a.用户会员过期 |