5

製品に設定された行Wp_postsであるすべてのテーブル行を削除するために、MySQL クエリを実行したいと考えています。post_parentWp_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秒後に復帰

エラー 1317 (70100): クエリの実行が中断されました

このクエリを非常に遅くしている原因は何でしょうか?

4

2 に答える 2

4

構成ファイルmax_allowed_packetでより高い値に変更する必要があります。my.ini

これは役立つかもしれません:

パケットが大きすぎます

通信パケットは、MySQL サーバーに送信される単一の SQL ステートメント、クライアントに送信される単一の行、またはマスター レプリケーション サーバーからスレーブに送信されるバイナリ ログ イベントです。

MySQL 5.5 サーバーまたはクライアントとの間で送受信できる最大のパケットは 1GB です。

于 2013-07-24T03:07:18.393 に答える
2

MySQL の一部のバージョンはin、非常に非効率的な方法でサブクエリを実装しています。exists相関句に変更します。

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