Re: View is not using a table index

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux