работа над ошибками "практика 'Партиции'"

This commit is contained in:
mnoskov
2026-03-31 12:26:02 +03:00
parent 176001d33c
commit 9765503642
@@ -2,9 +2,8 @@
1)
* range по полю order_date
* запросы с between в год
1. where order_date between '2022-01-01' and '2023-01-01'
1. where order_date >= '2022-01-01' and order_date < '2023-01-01'
2. where extract('year' from order_date) = '2025'
3. where order_date < '2026-01-01' and order_date > '2025-01-01'
2)
* тут два типа партиционирования подходят. range по created_at или list по country.
* если выбирать list по country то плюс - это при фильтрах по стране будут отсекаться лишние партиции, а минус, что год/месяц регистрации не будет разделен по партициям.
@@ -34,13 +33,13 @@ CREATE TABLE orders_part (
) PARTITION BY RANGE (order_date);
CREATE TABLE orders_2024 PARTITION OF orders_part
FOR VALUES FROM ('2024_01-01') TO ('2025-01-01');
FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');
CREATE TABLE orders_2025 PARTITION OF orders_part
FOR VALUES FROM ('2025_01-01') TO ('2026-01-01');
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
CREATE TABLE orders_2026 PARTITION OF orders_part
FOR VALUES FROM ('2026_01-01') TO ('2027-01-01');
FOR VALUES FROM ('2026-01-01') TO ('2027-01-01');
-- сделал insert который попросил сгенерировать нейронку
@@ -107,7 +106,7 @@ SELECT
FROM
users_part
WHERE
country = 'RU'
country = 'RU';
-- запрос скаинровал только партицию users_ru
EXPLAIN ANALYZE
@@ -116,7 +115,7 @@ SELECT
FROM
users_part
WHERE
country IN ('RU', 'KZ')
country IN ('RU', 'KZ');
-- запрос сканировал только партиции users_ru и users_kz
EXPLAIN ANALYZE
@@ -138,7 +137,7 @@ CREATE TABLE user_logs_part (
event_type text NOT NULL,
payload jsonb,
PRIMARY KEY (id, user_id)
) PARTITION BY hash (user_id)
) PARTITION BY hash (user_id);
CREATE TABLE user_logs_p1 PARTITION OF user_logs_part
FOR VALUES WITH (modulus 4, remainder 0);