Re: Terrible performance after deleting/recreating indexes

From: Shridhar Daithankar <shridhar(at)frodo(dot)hserus(dot)net>
To: Bill Chandler <billybobc1210(at)yahoo(dot)com>
Cc: pgsql-performance(at)postgresql(dot)org
Subject: Re: Terrible performance after deleting/recreating indexes
Date: 2004-07-08 09:07:37
Message-ID: 40ED0ED9.9000106@frodo.hserus.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc pgsql-performance

Bill Chandler wrote:

> Hi,
>
> Using PostgreSQL 7.4.2 on Solaris. I'm trying to
> improve performance on some queries to my databases so
> I wanted to try out various index structures.
>
> Since I'm going to be running my performance tests
> repeatedly, I created some SQL scripts to delete and
> recreate various index configurations. One of the
> scripts contains the commands for recreating the
> 'original' index configuration (i.e. the one I've
> already got some numbers for). Only thing is now
> when I delete and recreate the original indexes then
> run the query, I'm finding the performance has gone
> completely down the tubes compared to what I
> originally had. A query that used to take 5 minutes
> to complete now takes hours to complete.
>
> For what it's worth my query looks something like:
>
> select * from tbl_1, tbl_2 where tbl_1.id = tbl_2.id
> and tbl_2.name like 'x%y%' and tbl_1.x > 1234567890123
> order by tbl_1.x;
>
> tbl_1 is very big (> 2 million rows)
> tbl_2 is relatively small (7000 or so rows)
> tbl_1.x is a numeric(13)
> tbl_1.id & tbl_2.id are integers
> tbl_2.name is a varchar(64)
>
> I've run 'VACUUM ANALYZE' on both tables involved in
> the query. I also used 'EXPLAIN' and observed that
> the query plan is completely changed from what it
> was originally.

Get an explain analyze. That gives actual v/s planned time spent. See what is
causing the difference. A discrepency between planned and actual row is usually
a indication of out-of-date stats.

Which are the indexes on these tables? You should list fields with indexes first
in where clause. Also list most selective field first so that it eliminates as
many rows as possible in first scan.

I hope you have read the tuning articles on varlena.com and applied some basic
tuning.

And post the table schema, hardware config, postgresql config(important ones of
course) and explain analyze for queries. That would be something to start with.

Shridhar

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2004-07-08 12:11:23 Re: getXXX methods
Previous Message Amish Munshi 2004-07-08 07:16:54 bpchat cannot exceed 10485760

Browse pgsql-performance by date

  From Date Subject
Next Message Steinar H. Gunderson 2004-07-08 10:19:13 Odd sorting behaviour
Previous Message Shridhar Daithankar 2004-07-08 09:02:43 Re: inserting into brand new database faster than old database