The only scalable delete in Postgres is DROP TABLE
Summary
PlanetScale argues that in PostgreSQL, large-scale deletions are best handled by dropping or truncating tables rather than row-wise DELETEs, due to MVCC overhead and delayed space release. The article explains why DELETEs create dead tuples and vacuum work, then outlines practical strategies such as using DROP TABLE or TRUNCATE, performing one-off large deletes with a temporary table, and leveraging partitioning for ongoing deletes. It also discusses related tooling and approaches to avoid bulk deletes through schema design.