Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL使用子查询删除大量条目_Php_Mysql_Wordpress - Fatal编程技术网

Php SQL使用子查询删除大量条目

Php SQL使用子查询删除大量条目,php,mysql,wordpress,Php,Mysql,Wordpress,我有两个数据库表。一个表格来自WordPress wp_post,包含我的WordPress站点的所有帖子。第二个表仅用于应用程序逻辑,存储使用我的插件创建的帖子的ID 因此,在我的应用程序逻辑表中大约有70.000个ID,我想使用一条SQL语句删除所有帖子。这就是我尝试过的说法: 从wp_posts中删除,其中ID在wp_my_表中选择post_ID,其中post_ID不为NULL且post_ID>0 子查询获取要删除的所有ID,但我的MySQL服务器响应该语句花费了太多时间,并取消了该语句的

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

因此,在我的应用程序逻辑表中大约有70.000个ID,我想使用一条SQL语句删除所有帖子。这就是我尝试过的说法:

从wp_posts中删除,其中ID在wp_my_表中选择post_ID,其中post_ID不为NULL且post_ID>0

子查询获取要删除的所有ID,但我的MySQL服务器响应该语句花费了太多时间,并取消了该语句的执行。是否有其他方法获取所有ID并删除所有帖子


我知道有一些WordPress函数,比如wp\u delete\u post等但是当删除那么多的帖子时,速度非常非常慢。

您可以尝试删除加入:

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

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

您可以尝试删除连接:

DELETE t1
FROM wp_posts t1
INNER JOIN wp_my_table t2
    ON t1.ID = t2.post_id
WHERE
    t2.post_id > 0
您不需要对wp_my_table表中的post_id进行空检查,因为联接应该过滤掉这些记录。

可以在select的末尾添加LIMIT 1000,然后简单地重复它并增加限制大小,直到您完成所有操作或命中时间错误。可以在select的末尾添加LIMIT 1000,然后简单地重复并删除它增加限制大小,直到您完成所有限制或命中时间错误。