Range partitioning assigns rows to ordered lower and upper bounds, making it a practical choice for time-based data whose size and retention requirements are predictable. section 4.2
Monthly payments partitions
Define the parent table with PARTITION BY RANGE (tstamp), then create one partition per month. A timestamp predicate lets PostgreSQL prune unrelated partitions: the example query reads only payments_p_2022_3 and finishes in about 2.5 seconds, compared with 62 seconds against the unpartitioned table.
Operationally, range partitioning also changes data maintenance:
- Create partitions ahead of ingestion and size them using capacity and retention estimates. section 4.2

