Re: Partitioned tables - planner wont use indexes - Mailing list pgsql-performance

From Bricklen Anderson
Subject Re: Partitioned tables - planner wont use indexes
Date
Msg-id 47FA4352.5050309@presinet.com
Whole thread Raw
In response to Partitioned tables - planner wont use indexes  (kevin kempter <kevin@kevinkempterllc.com>)
List pgsql-performance
kevin kempter wrote:
> One of the things we need to query is the min date from the master table
> - we may explore alternatives for this particular query, however even if
> we fix this query I think we have a fundamental issue with the use of
> indexes (actuallt the non-use) by the planner.

We had a similar requirement, so I've been using a function that loops
over the child tables, and queries for the min date from each. If all
you need is the date, you can try a function call. Here is a modified
version of what I've been using:

CREATE OR REPLACE function get_min_date() RETURNS DATE as $_$
DECLARE
     x RECORD;
     min_date DATE;
     min_date_tmp DATE;
     qry TEXT;
BEGIN
     /* can also test MIN() aggregate, rather than ORDER BY/LIMIT */
     FOR x IN EXECUTE 'select tablename from pg_tables where tablename
like ''part_20%''' loop
         qry := 'SELECT logdate FROM '||x.tablename||' ORDER BY logdate
LIMIT 1';
         EXECUTE qry INTO min_date_tmp;
         IF (min_date IS NULL OR (min_date_tmp IS NOT NULL AND
min_date_tmp<min_date)) THEN
             min_date := min_date_tmp;
         END IF;
     END LOOP;
     RETURN min_date;
END;
$_$ language plpgsql immutable;

pgsql-performance by date:

Previous
From: Dimi Paun
Date:
Subject: Severe performance problems for simple query
Next
From: Matthew
Date:
Subject: Re: Severe performance problems for simple query