Re: [PERFORM] Cleaning up indexes

2004-09-25 Thread Bruce Momjian
Martin Foster wrote:
 My database was converted from MySQL a while back and has maintained all 
 of the indexes which were previously used.   Tt the time however, there 
 were limitations on the way PostgreSQL handled the indexes compared to 
 MySQL.
 
 Meaning that under MySQL, it would make use of a multi-column index even 
 if the rows within did not match.When the conversion was made more 
 indexes were created overall to correct this and proceed with the 
 conversion.
 
 Now the time has come to clean up the used indexes.   Essentially, I 
 want to know if there is a way in which to determine which indexes are 
 being used and which are not.   This will allow me to drop off the 
 unneeded ones and reduce database load as a result.

Just for clarification, PostgreSQL will use an a,b,c index for a, (a,b),
and (a,b,c), but not for (a,c).  Are you saying MySQL uses the index for
(a,c)?  This item is on our TODO list:

* Use index to restrict rows returned by multi-key index when used with
  non-consecutive keys to reduce heap accesses

  For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and
  col3 = 9, spin though the index checking for col1 and col3 matches,
  rather than just col1

 And have things changed as to allow for mismatched multi-column indexes 
 in version 7.4.x or even the upcoming 8.0.x?

As someone already pointed out, the pg_stat* tables will show you what
indexes are used.

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (610) 359-1001
  +  If your life is a hard drive, |  13 Roberts Road
  +  Christ can be your backup.|  Newtown Square, Pennsylvania 19073

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faqs/FAQ.html


[PERFORM] Cleaning up indexes

2004-09-23 Thread Martin Foster
My database was converted from MySQL a while back and has maintained all 
of the indexes which were previously used.   Tt the time however, there 
were limitations on the way PostgreSQL handled the indexes compared to 
MySQL.

Meaning that under MySQL, it would make use of a multi-column index even 
if the rows within did not match.When the conversion was made more 
indexes were created overall to correct this and proceed with the 
conversion.

Now the time has come to clean up the used indexes.   Essentially, I 
want to know if there is a way in which to determine which indexes are 
being used and which are not.   This will allow me to drop off the 
unneeded ones and reduce database load as a result.

And have things changed as to allow for mismatched multi-column indexes 
in version 7.4.x or even the upcoming 8.0.x?

Martin Foster
[EMAIL PROTECTED]
---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
 joining column's datatypes do not match


Re: [PERFORM] Cleaning up indexes

2004-09-23 Thread Gregory S. Williamson

If you have set up the postgres instance to write stats, the tables 
pg_stat_user_indexes, pg_statio_all_indexes and so (use the \dS option at the psql 
prompt to see these system tables); also check the pg_stat_user_tables table and 
similar beasts for information on total access, etc. Between these you can get a good 
idea of what indexes are not being used, and from the sequentail scan info on tables 
perhaps some idea of what may need some indexes.

HTH,

Greg Williamson
DBA
GlobeXplorer LLC 

-Original Message-
From:   Martin Foster [mailto:[EMAIL PROTECTED]
Sent:   Thu 9/23/2004 3:16 PM
To: [EMAIL PROTECTED]
Cc: 
Subject:[PERFORM] Cleaning up indexes
My database was converted from MySQL a while back and has maintained all 
of the indexes which were previously used.   Tt the time however, there 
were limitations on the way PostgreSQL handled the indexes compared to 
MySQL.

Meaning that under MySQL, it would make use of a multi-column index even 
if the rows within did not match.When the conversion was made more 
indexes were created overall to correct this and proceed with the 
conversion.

Now the time has come to clean up the used indexes.   Essentially, I 
want to know if there is a way in which to determine which indexes are 
being used and which are not.   This will allow me to drop off the 
unneeded ones and reduce database load as a result.

And have things changed as to allow for mismatched multi-column indexes 
in version 7.4.x or even the upcoming 8.0.x?

Martin Foster
[EMAIL PROTECTED]

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match




---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster