SQL Practice Logo

SQLPractice Online

Table Partitioning Strategies: Performance

Module: Query Optimization & Performance

**Partition Pruning Impact:**

Table: 1B rows, 12 monthly partitions

Without pruning (scans all partitions):

- Reads: 1B rows

- I/O: 500GB

- Time: 5 minutes

With pruning (scans 1 partition):

- Reads: 83M rows (8%)

- I/O: 42GB (8%)

- Time: 20 seconds (15x faster)

**Index Size Reduction:**

Non-partitioned table:

- Table: 1B rows, 500GB

- Index on customer_id: 50GB

- Index scan: reads 50GB index

Partitioned table (12 partitions):

- Each partition: 83M rows, 42GB

- Index per partition: 4.2GB

- Query scans 1 partition index: 4.2GB (12x smaller)

**Parallel Operations:**

Non-partitioned:

- VACUUM: 2 hours (single-threaded)

- CREATE INDEX: 1 hour (single-threaded)

Partitioned (12 partitions):

- VACUUM: 12 partitions in parallel = 15 minutes (8x faster)

- CREATE INDEX: 12 indexes in parallel = 10 minutes (6x faster)

**Archive Performance:**

Non-partitioned:

- DELETE old data: 4 hours (scans table, deletes rows, updates indexes)

- VACUUM after DELETE: 2 hours

- Total: 6 hours

Partitioned:

- DROP old partition: 1 second (instant)

- No VACUUM needed

- Total: 1 second (21,600x faster)

**Partition Overhead:**

Planning time with many partitions:

- 10 partitions: +5ms

- 100 partitions: +50ms

- 1000 partitions: +500ms