I want to execute a MySQL query in order to delete all Wp_posts table rows which post_parent is a Wp_posts row with post_type set to product;
So I do
INSERT INTO temp (SELECT DISTINCT id FROM wp_posts WHERE post_type = "product")
(Inserts 4k rows)
DELETE FROM wp_posts WHERE post_parent IN (SELECT tid FROM temp)
..
After around 100 seconds, it returns
ERROR 1317 (70100): Query execution was interrupted
What could be making this query so bloody slow?
You need change your max_allowed_packet to a higher value in your my.ini configuration file.
This might help:
Packet Too Large
A communication packet is a single SQL statement sent to the MySQL server, a single row that is sent to the client, or a binary log event sent from a master replication server to a slave.
The largest possible packet that can be transmitted to or from a MySQL 5.5 server or client is 1GB.
Some versions of MySQL implement in with a subquery in a very inefficient manner.  Change it to a correlated exists clause:
DELETE FROM wp_posts
    WHERE exists (SELECT 1 FROM temp where temp.tid = wp_posts.post_parent)
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With