首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL存储过程删除

MYSQL存储过程删除
EN

Stack Overflow用户
提问于 2014-05-01 13:37:43
回答 1查看 135关注 0票数 0

我有存储过程:

代码语言:javascript
复制
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行呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-01 13:50:46

下面是将select直接转换为delete的结果

代码语言:javascript
复制
DELETE FROM facebook_users_likes ful 
WHERE (select count(*) from facebook_users fu where fu.social_id = ful.social_id) = 0;

在这种情况下使用not exists更有效:

代码语言:javascript
复制
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)上有索引,则尤其如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23408845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档