素晴らしい、お役に立てて嬉しいです。回答をまとめるために、Railsコンソールで以下を使用して、90日以上前に削除されたすべてのトピックを削除できます。1000件を超えるトピックがある場合は、必要に応じて繰り返してください。
Topic.with_deleted.where(deleted_at: ...90.days.ago).limit(1000).destroy_all
それが完了したら、削除されたトピックから孤立したすべての投稿を削除するために、以下を使用できます。
Post.find_by_sql("select * from posts where topic_id not in (select id from topics)").each { |p| p.destroy }
上記のコマンドは、削除されたトピックとその孤立した投稿のみを削除し、削除された投稿は削除しないことに注意してください。90日以上前の削除された投稿も削除するには、以下を使用します。必要に応じて繰り返してください。
Post.with_deleted.where(deleted_at: ...90.days.ago).limit(1000).destroy_all
追伸 ちなみに、limit(1000)なしでdestroy_allを試して問題が発生しましたか、それとも制限なしでは試しませんでしたか?