pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Richard Huxton <dev@archonet.com>
To: Dan Shea <dan.shea@ec.gc.ca>
Cc: pgsql-performance@postgresql.org
Subject: Re: View is not using a table index
Date: Tue, 24 Apr 2007 16:41:43 +0100
Message-ID: <462E2537.2020706@archonet.com> (raw)
In-Reply-To: <75312DFA648AF74D8A236E5269BFBE4B04292F00@ncrx3.ncr.int.ec.gc.ca>
References: <75312DFA648AF74D8A236E5269BFBE4B04292F00@ncrx3.ncr.int.ec.gc.ca>

Dan Shea wrote:
> We have a table which we want to normalize and use the same SQL to
> perform selects using a view.  
> The old table had 3 columns in it's index
> (region_id,wx_element,valid_time). 
> The new table meteocode_elmts has a similar index but the region_id is a
> reference to another table region_lookup and wx_element to table
> meteocode_elmts_lookup.  This will make our index and table
> significantly smaller.  
> As stated ablove we want to use the same SQL query to check the view.  
> The problem is we have not been able to set up the view so that it
> references the "rev" index.  It just uses the region_id but ignores the
> wx_element, therefore the valid_time is also ignored.  The rev index now
> consists of region_id(reference to  region_lookup
> table),wx_element(reference to meteocode_elmts_lookup) and valid_time.
> 
> We are using Postgresql 7.4.0.  Below is the relevant views and tables
> plus an explain analyze of the query to the old table and the view.

Please say it's not really 7.4.0 - you're running 7.4.xx actually, 
aren't you, where xx is quite a high number?

> phoenix=# \d region_lookup 
>          Table "public.region_lookup" 
>   Column   |         Type          | Modifiers 
> -----------+-----------------------+-----------
>  id        | integer               | not null 
>  region_id | character varying(99) |
> Indexes: 
>     "region_lookup_pkey" primary key, btree (id) 
> 
> phoenix=# \d meteocode_elmts_lookup 
>      Table "public.meteocode_elmts_lookup" 
>    Column   |         Type          | Modifiers 
> ------------+-----------------------+-----------
>  id         | integer               | not null 
>  wx_element | character varying(99) | not null
> Indexes: 
>     "meteocode_elmts_lookup_pkey" primary key, btree (id) 
>     "wx_element_idx" btree (wx_element) 

Anyway, you're joining to these tables and testing against the text 
values without any index useful to the join.

Try indexes on (wx_element, id) and (region_id,id) etc. Re-analyse the 
tables and see what that does for you.

Oh - I'd expect an index over the timestamps might help too.

Then, if you've got time try setting up an 8.2 installation, do some 
basic configuration and transfer the data. I'd be surprised if you 
didn't get some noticeable improvements just from the version number 
increase.
-- 
   Richard Huxton
   Archonet Ltd



view thread (6+ messages)  latest in thread

Message-ID: <462E2537.2020706@archonet.com>
Permalink:  ../462E2537.2020706@archonet.com/
Also on:    postgresql.org/message-id/462E2537.2020706@archonet.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: dev@archonet.com, dan.shea@ec.gc.ca
  Subject: Re: View is not using a table index
  In-Reply-To: <462E2537.2020706@archonet.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox