Партицирование — это метод разбиения большой таблицы на более мелкие, управляемые части, называемые партициями. В запросах партиция используется при фильтрации.
Как работает партицирование внутри PostgreSQL?
Из картинки вы можете увидеть, что у нас таблица sales_data
поделилась по кварталам. И теперь во время запроса сканируется не вся таблица, а только какая-то определенная таблица исходя из фильтров запроса.
Создание партицированной таблицы
-- Создание партицированной таблицы по диапазону дат
CREATE TABLE sales_data (
order_id SERIAL,
customer_id INT,
amount DECIMAL(10, 2),
order_date DATE,
order_quartal DATE
PRIMARY KEY (order_id)
) PARTITION BY RANGE (order_quartal);
Выбор ключа партиции
Ключ партиции должен выбираться исходя из логики, по какому принципу вы обновляете и фильтруете данные.
Типы партицирования
Использование партиции в запросах
WHERE/JOIN
ключ партицированияSELECT
date_trunc('quarter', order_quartal) AS quarter,
SUM(amount) AS total_sales
FROM
sales_data
WHERE
quarter in ('2023-04-01', 2023-07-01') -- в условии используем ключ партицирования
GROUP BY
quarter
Партицирование - это must have для ускорения запросов, пользоваться им нужно всегда, если ваша таблица больше 100 тыс строк ;)