I partitioned a table "data_table" by the key "import_id" to reduce the number of partitions to be loaded in my queries. I used list partitions, each containing usually just one "import_id". I used a primary key (id, import_id) But PostgreSQL does not consider partition keys to avoid loading not needed partitions.

My query:
SELECT SUM(something) FROM data_table WHERE import_id IN (SELECT id FROM import_table WHERE ...)
My problem:
The query takes too long, because PostgreSQL uses a hash join over all partitions of "data_table" with the "import_table", instead of pruning the "data_table" partitions by the import_ids at runtime.
Static pruning (when using ... IN (1, 2, 3, 4)) works fine though.

What am I doing wrong that runtime partition pruning with PostgreSQL 11.5 does not work in my case?


Reply via email to