We have a large DB with partitioned tables in postgres. We have had trouble with a ORDER/LIMIT type query. The order and limit are not pushed down to the sub-tables....
CREATE TABLE base (
foo int
);
CREATE TABLE bar_0
extra int
) INHERITS (base);
ALTER TABLE bar ADD PRIMARY KEY (foo);
-- repeated for bar_0... bar_40
SELECT foo FROM base ORDER BY foo LIMIT 10;
is real slow. What is required to make the query planner generate the following instead... (code change i know, but how hard would it be?)
SELECT
foo
FROM
(
SELECT
*
FROM bar_0
ORDER BY foo LIMIT 10
UNION ALL
SELECT
*
FROM bar_1
ORDER BY foo LIMIT 10
....
) AS base
ORDER BY foo
LIMIT 10;