SQL使用子查询删除了很多条目

时间:2017-08-30 09:05:57

标签: php mysql wordpress

我有两个数据库表。一个表来自WordPress(wp_post),其中包含我的WordPress网站上的所有帖子。第二个表仅用于应用程序逻辑,并存储使用我的插件创建的帖子中的ID。

因此,我的应用程序逻辑表中有大约70.000个ID,我想使用单个SQL语句删除所有帖子。那是我试过的声明:

DELETE FROM wp_posts WHERE ID in (SELECT post_id FROM wp_my_table WHERE post_id IS NOT NULL AND post_id > 0);

子查询会删除所有 ID,但我的MySQL服务器会响应该语句花费太多时间并取消执行该语句。是否有不同的方式来获取所有ID并删除所有帖子?

我知道有一些WordPress函数,如wp_delete_post等。 - 但是当删除那些数量的帖子时,它确实很慢。

1 个答案:

答案 0 :(得分:2)

您可以尝试删除加入:

DELETE t1
FROM wp_posts t1
INNER JOIN wp_my_table t2
    ON t1.ID = t2.post_id
WHERE
    t2.post_id > 0

您不应该对NULL表中的post_id进行wp_my_table检查,因为联接应该过滤掉这些记录。