2017-08-30 8 views
0

私は2つのデータベーステーブルを持っています。 1つのテーブルはWordPress(wp_post)にあり、私のWordPressサイトからのすべての投稿を含んでいます。 2番目のテーブルはアプリケーションロジック用であり、プラグインを使用して作成された投稿のIDを格納します。SQLはサブクエリを使用して多くのエントリを削除します

私のアプリケーションロジックテーブルには約70,000のIDがあり、1つのSQLステートメントを使用してすべての投稿を削除したいとします。

DELETE FROM wp_posts WHERE ID in (SELECT post_id FROM wp_my_table WHERE post_id IS NOT NULL AND post_id > 0);

サブクエリは、削除するALL IDを取得しますが、私のMySQLサーバは、文が時間の過ぎる量を取り、文の実行を中止することを応答します。それは、私が試した声明です。すべてのIDを取得してすべての投稿を削除する別の方法はありますか?

私は、wp_delete_postなどのようないくつかのWordPressの機能があることを知っています。しかし、その量の投稿を削除すると、本当に遅くなります。あなたが削除しようとすることができ

+0

セレクトの最後に 'LIMIT 1000 'を追加して、それを繰り返すだけで、すべてのエラーやヒットタイムエラーが発生するまでリミットサイズを増やすことができます。 – Tigger

答えて

2

参加:あなたがようwp_my_table表にpost_idNULLチェックは必要ありません

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

、このような記録をオフフィルタする必要があり参加します。

+0

ありがとう!魅力のように動作します。 – beeef

関連する問題