172 похожих чатов

Доброго времени суток товарищи! Никто часом не юзал pg_pathman? Столкнулся

с такой проблемой, есть 2 таблицы со следующей структурой:
CREATE TABLE public.valuation (
id bigserial NOT NULL,
cost numeric(20,6) NULL,
discount numeric(20,6) NULL,
cost_with_vat numeric(20,6) NULL,
vat_sum numeric(20,6) NULL,
vat_rate_code text NULL,
currency_code text NOT NULL,
CONSTRAINT valuation_pkey PRIMARY KEY (id)
);

CREATE TABLE public.orders (
id uuid NOT NULL DEFAULT gen_random_uuid(),
"number" text NOT NULL,
paid_online_on_delivery_id int8 NULL,
CONSTRAINT orders_pkey PRIMARY KEY (id)
);

CREATE UNIQUE INDEX udx_orders_number ON public.orders USING btree (number);

Связь

valuation.id --> orders.paid_online_on_delivery_id (1 к 1)

Таблица valuation разбита на партиции по диапазонам. Ключ партиционирования - id. Всего 100 партиций.

Выполняю такой запрос

EXPLAIN (ANALYZE, BUFFERS)
SELECT
o.number,
v.id,
v.cost
FROM
orders o
JOIN valuation v ON v.id = o.paid_online_on_delivery_id
WHERE
o.number = '1104290452'

получаю

Planning time: 12748.652 ms
Execution time: 0.198 ms

Из результатов вижу, что на планирование запроса ушло целых 12 секунд 748 миллисекунд.

Если делаю тот же запрос указывая точную партицию, то получаю

Planning time: 0.351 ms
Execution time: 0.083 ms

Время планирования резко уменьшилось до 0.351 миллисекунд. Получается, что в первом запросе 12 секунд потратилось на поиск нужной партиции

Но если делаю запрос без джойна, то время нормальное:
Planning time: 0.128 ms
Execution time: 0.029 ms

Никто с таким не сталкивался?

1 ответов

11 просмотров

Я бы делал связываемые поля буквально одного типа, не просто совместимого. Для проверки закидонов планировщика можно поменять джойн на LEFT.

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Привет, запускаю werf в dind в k8s, получаю ошибку на этапе build/beforeSetup: /.werf/stapel/embedded/bin/bash: /.werf/scripts/5898bdfe5214357d3706b879cc8d3d78460fb379607cbd...
florius0
7
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
Карта сайта