PostgreSQL 11: how to partition 1000 tenants
Partitioning is mostly about speeding up deletes and sequential scans.


If your biggest pain is the big deletes by account_id, list partitioning on that column would be the best solution.
If your biggest pain is getting rid of all data older than a certain date, range partitioning by time would be the solution.
If you have may queries that have to perform sequential scans of large tables, but have a WHERE condition on account_id or a time constraint, partitioning on that WHERE condition would allow PostgreSQL to perform the sequential scan only on some of the partitions.


You have to decide if any of these things is painful enough for you to consider partitioning. Partitioning doesn't come for free: it will increase query planning time and sometimes execution time as well.

Partitioning won't make index scans faster, often the opposite is the case. Only partition if you expect a real benefit from it.

1000 partitions is almost too many to be efficient. You might consider having separate partitions for the bigger accounts and bundling the rest, perhaps using a default partition.