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
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 |
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 |