Slow Deletes in Postgres: It's Almost Never the Delete Itself
Slow deletes usually come from the work around the row: foreign keys, triggers, indexes, WAL, vacuum debt, and transaction size. The fix starts by finding what each deleted row has to pay for.