簡體   English   中英

MYSQL存儲過程刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM