[英]MYSQL stored procedure delete
我有存储过程:
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;
END
Select返回46,000行,但每个执行存储过程仅删除一行。 那么,如何一次删除所有46 000行?
这是将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)
上具有索引,则尤其如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.