我有两个数据库表。一个表来自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
等。 - 但是当删除那些数量的帖子时,它确实很慢。
答案 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
检查,因为联接应该过滤掉这些记录。