Re: Query speed problems - Mailing list pgsql-performance

From Nikolaus Dilger
Subject Re: Query speed problems
Date
Msg-id 20030417182613.4395.h015.c001.wm@mail.dilger.cc.criticalpath.net
Whole thread Raw
In response to Query speed problems  (Victor Danilchenko <danilche@cs.umass.edu>)
Responses Re: Query speed problems  (Victor Danilchenko <danilche@cs.umass.edu>)
List pgsql-performance
Victor,

What is the issue?  You get sub second response time.
Why waste your time trying to make it faster?
If you have a query that runs serveral minutes or hours
then its worthwhile tuning.  Or if your query gets
executed several thausend times a day.

Regards,
Nikolaus

On Thu, 17 Apr 2003 15:17:01 -0400 (EDT), Victor
Danilchenko wrote:

>
>     Hi,
>
>     In the process of developing an API for
> web/perl/postrgres
> interactions, I have come up against a peculiar
> problem; a rather simple
> query, run on two relatively small tables, takes as
> much as 0.4 seconds
> on my development system (it's a P2 266, which in this
> case is a good
> thing, as it exposes speed issues). I tried
> accomplishging the same
> thing via subqueries and joins, and both methods give
> me similarly bad
> result (join query is a little slower, but only a
> little).
>
>     The queries I have tested are as follows:
>
> SELECT DISTINCT maker.* FROM maker,model WHERE
> maker.id=model.maker
> SELECT DISTINCT maker.* FROM maker join model ON
> maker.id=model.maker
>
>     The point of the queries is to extract only the maker
> rows which
> are referenced from the model table. I would happily
> use another way to
> achieve the same end, should anyone suggest it.
>
>     "maker" has only 137 rows, "model" only 1233 rows. I
> test the
> performance in perl, by taking time right before and
> after query
> execution. Executing the queries takes anywhere
between
> .3 and .5
> seconds, depending on some other factors (removing the
> 'distinct'
> keyword from the 1st query shaves about .1 second off
> of the execution
> time for example).
>
>     These execution times seem ridiculous. Any idea what
> the culprit
> may be? I hope it's not the text fields, 'cuz those
> fields are
> important.
>
>     Both tables are quite simple:
>
> # \d maker
>               Table "public.maker"
>    Column   |         Type          | Modifiers
> ------------+-----------------------+-----------
>  id         | character varying(4)  | not null
>  fullname   | character varying(20) |
>  contact    | character varying(20) |
>  phone      | character varying(15) |
>  service_no | character varying(20) |
>  lastuser   | character varying(30) |
>  comments   | text                  |
> Indexes: maker_pkey primary key btree (id)
> Triggers: RI_ConstraintTrigger_18881,
>           RI_ConstraintTrigger_18882
>
> # \d model
>                                 Table "public.model"
>     Column     |         Type          |

>   Modifiers
>
---------------+-----------------------+---------------------------------------------
>  id            | integer               | not null
> default nextval('model_ids'::text)
>  name          | character varying(20) | not null
>  maker         | character varying(4)  |
>  type_hardware | character varying(4)  |
>  fullname      | character varying(40) |
>  spec          | character varying(50) |
>  lastuser      | character varying(30) |
>  comments      | text                  |
>  size_cap      | character varying(10) |
> Indexes: model_pkey primary key btree (id),
>          unique_model unique btree (name, maker,
> type_hardware)
> Check constraints: "nonempty_fullname" (fullname >
> ''::character varying)
> Foreign Key constraints: valid_maker FOREIGN KEY
> (maker) REFERENCES \
>                            maker(id) ON UPDATE NO
> ACTION ON DELETE NO ACTION,
>                          valid_type FOREIGN KEY
> (type_hardware)
> REFERENCES type_hardware(id) ON UPDATE NO ACTION ON
> DELETE NO ACTION
>
> --
> |  Victor  Danilchenko  | Any sufficiently advanced

>   |
> | danilche@cs.umass.edu | technology is
> indistinguishable |
> |   CSCF   |   5-4231   | from a Perl script.

>   |
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the
> unregister command
>     (send "unregister YourEmailAddressHere" to
> majordomo@postgresql.org)


pgsql-performance by date:

Previous
From: Stephan Szabo
Date:
Subject: Re: Query speed problems
Next
From: Kevin Brown
Date:
Subject: Foreign key performance