Introduction
Partitioning helps organize large tables into smaller pieces, making data easier and faster to manage.
Jump into concepts and practice - no test required
CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ) PARTITION BY partition_method (column_name);
CREATE TABLE sales ( id SERIAL PRIMARY KEY, sale_date DATE NOT NULL, amount NUMERIC ) PARTITION BY RANGE (sale_date);
CREATE TABLE logs ( id SERIAL PRIMARY KEY, log_level TEXT NOT NULL, message TEXT ) PARTITION BY LIST (log_level);
CREATE TABLE users ( id SERIAL PRIMARY KEY, region TEXT NOT NULL, name TEXT ) PARTITION BY HASH (id);
CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, order_date DATE NOT NULL, customer_id INT, amount NUMERIC ) PARTITION BY RANGE (order_date); CREATE TABLE orders_2023 PARTITION OF orders FOR VALUES FROM ('2023-01-01') TO ('2024-01-01'); CREATE TABLE orders_2024 PARTITION OF orders FOR VALUES FROM ('2024-01-01') TO ('2025-01-01'); INSERT INTO orders (order_date, customer_id, amount) VALUES ('2023-05-10', 1, 100.00), ('2024-03-15', 2, 150.00); SELECT * FROM orders WHERE order_date >= '2024-01-01';
CREATE TABLE orders (id INT, region TEXT, order_date DATE) PARTITION BY LIST (region);
CREATE TABLE orders_us PARTITION OF orders FOR VALUES IN ('US');
CREATE TABLE orders_eu PARTITION OF orders FOR VALUES IN ('EU');INSERT INTO orders VALUES (1, 'US', '2024-01-01'); SELECT * FROM orders WHERE region = 'US';
CREATE TABLE logs (id SERIAL, log_date DATE) PARTITION BY RANGE (log_date);
CREATE TABLE logs_2023 PARTITION OF logs FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');INSERT INTO logs (log_date) VALUES ('2022-12-31');