работа над ошибками "практика 'Партиции'"
This commit is contained in:
+7
-8
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user