Чтобы повысить производительность миллионов строк в 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. Приветствую любую хорошую идею.