我有存储过程:
BEGIN
SELECT @id_for_del := ful.social_id
FROM facebook_users_likes ful
where
(select count(*) from facebook_users fu where fu.social_id = ful.social_id) = 0;
IF NOT @id_for_del IS NULL
THEN
DELETE from facebook_users_likes WHERE social_id = @id_for_del;
END IF;
ENDSelect返回46 000行,但每次执行存储过程只删除一行。那麽,如何一次删除46 000行呢?
发布于 2014-05-01 13:50:46
下面是将select直接转换为delete的结果
DELETE FROM facebook_users_likes ful
WHERE (select count(*) from facebook_users fu where fu.social_id = ful.social_id) = 0;在这种情况下使用not exists更有效:
DELETE FROM facebook_users_likes ful
WHERE NOT EXISTS (select 1 from facebook_users fu where fu.social_id = ful.social_id);如果在facebook_users(social_id)上有索引,则尤其如此。
https://stackoverflow.com/questions/23408845
复制相似问题