MySQL查询超时:(70100):查询执行被中断

时间:2013-07-24 03:02:09

标签: mysql wordpress

我想执行一个MySQL查询,以删除Wp_posts post_parentWp_posts行,post_type行设置为product;

所以我做了

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):查询执行中断

什么可能使这个查询如此血腥缓慢?

2 个答案:

答案 0 :(得分:4)

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

这可能会有所帮助:

  

Packet Too Large

     

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

     

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

答案 1 :(得分:2)

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

DELETE FROM wp_posts
    WHERE exists (SELECT 1 FROM temp where temp.tid = wp_posts.post_parent)