最近、これを使用してデータベースから200万行以上を削除しました(ユーザーが存在しなくなったユーザー履歴を一掃したかったのです)。私は Django の簡単な履歴を使用しています。
active_ids = User.objects.values_list("id", flat=True)
User.history.filter(~Q(id__in=active_ids)).delete()
これには約 5 分かかり、必要なすべての行が削除されました。ただし、操作を実行する前のテーブル サイズは約 900 MB でした。行を削除した後でも、まだ 700 MB あります。予想をはるかに超えています。さらに調べてみると、このテーブルの index_length のサイズは依然として 424 MB と大きいようです。実際に落ちたということはないと思います。
このインデックスのサイズは減りましたか? User モデルには、id、username、email などのいくつかの db_indices があります。