如果有两个表: users / userinfo
这两个表中的数据本来应该是一一对应的,但由于需要userinfo表中的数据被删除一部分,现在需要删除uses表存在但在userinfo表中已被删除的记录。delete from users where userid not in (select userid from userinfo);但每个表都有60万以上的记录,这条语句会执行N长时间,有没有更好的方法呢?
这两个表中的数据本来应该是一一对应的,但由于需要userinfo表中的数据被删除一部分,现在需要删除uses表存在但在userinfo表中已被删除的记录。delete from users where userid not in (select userid from userinfo);但每个表都有60万以上的记录,这条语句会执行N长时间,有没有更好的方法呢?
WHERE userid IN(
SELECT a.userid
FROM users a
LEFT OUTER JOIN userinfo b
ON(a.userid=b.userid)
WHERE b.userid IS NULL);
exist -〉exists
写错了。
上面的SQL可以试一下,理论上讲使用not exists比not in要快,而且有效的只是where部分,不会产生很大的试图