После создания таблиц наследования в postgres запросы на выбор данных из родительского объекта занимают больше времени - PullRequest
0 голосов
/ 10 февраля 2020

Чтобы повысить производительность миллионов строк в postgres, создайте наследование родительских и дочерних таблиц на основе условий.

CREATE TABLE a (id, type, measured_time, station);
CREATE TABLE a1 (CHECK (type = 001)) INHERITS a;
CREATE TABLE a2 (CHECK (type = 002)) INHERITS a;
CREATE TABLE a3 (CHECK (type = 003)) INHERITS a;

Для выбора данных необходимо выполнить запрос через родительскую таблицу для получения данных. из дочерней таблицы.

SELECT * from a 
WHERE a.type = 001 
  AND a.measured_time IN (SELECT MAX(a.measured_time) 
                          WHERE a.measured_time >= now()-interval '1 hour' 
                            AND a.measured_time < now() 
                            AND type = 001 
                            AND station = 'chicago' 
                            ORDER BY a.measured_time);

Мне так любопытно, почему производительность этого запроса ухудшается при использовании наследования для обработки аналогичного раздела в postgres. Приветствую любую хорошую идею.

1 Ответ

0 голосов
/ 10 февраля 2020

Пожалуйста, попробуйте использовать объединения вместо В предложении в query.it дает лучшую производительность

...