5

我想执行一个 MySQL 查询以删除所有Wp_posts表行,这些行post_parent是设置为产品的行;Wp_postspost_type

所以我愿意

INSERT INTO temp (SELECT DISTINCT id FROM wp_posts WHERE post_type = "product")

(插入 4k 行)

DELETE FROM wp_posts WHERE post_parent IN (SELECT tid FROM temp)

..

大约 100 秒后,它返回

ERROR 1317 (70100):查询执行被中断

是什么让这个查询如此缓慢?

4

2 回答 2

4

您需要在配置文件中将您的值更改max_allowed_packet为更高的值。my.ini

这可能会有所帮助:

数据包太大

通信包是发送到 MySQL 服务器的单个 SQL 语句,发送到客户端的单行,或者从主复制服务器发送到从服务器的二进制日志事件。

可以传输到 MySQL 5.5 服务器或客户端的最大可能数据包为 1GB。

于 2013-07-24T03:07:18.393 回答
2

某些版本的 MySQLin以非常低效的方式实现子查询。将其更改为相关exists子句:

DELETE FROM wp_posts
    WHERE exists (SELECT 1 FROM temp where temp.tid = wp_posts.post_parent)
于 2013-07-24T03:05:52.093 回答