1
テーブル内の各user_id(グループ)に対して、各グループのIDが最も高いレコードを除くすべてのレコードを削除します。これに似た何か:Delete all records except the most recent one?重複レコードを繰り返し削除する
私の場合、それは次のようになります。
DELETE FROM logins
WHERE user_id IS NOT NULL AND id NOT IN (SELECT MAX(id) FROM logins WHERE user_id IS NOT NULL GROUP BY user_id)
問題があり、表には100 +ミロンの記録を保持しているので、そのような単一のクエリでこれを行うことは不可能パフォーマンスだろう賢い。
他の方法でこれを行うことができます。いくつかのバッチで?
最初のクエリが私のものと同じように動作していることを確認してください(user_idのグループごとに最大のIDを保持していますか)。また、一度に100万レコードを削除するのに適しているでしょうか? –
@ニルスクリスチャン。 。 。最初のものは全ての 'user_id'のために最大のidを除いて全て削除されます。 –
ありがとうございました。最初にバッチで多くのデータを削除しました。その後、最初のクエリを実行し、+ 2mの行に対して正常に動作しました –