Re: Correcting Hash Join Estimates - Mailing list pgsql-performance

From Mark Lubratt
Subject Re: Correcting Hash Join Estimates
Date
Msg-id 3de3144f9eb6c83400f8d41584af47f2@indeq.com
Whole thread Raw
In response to Re: Correcting Hash Join Estimates  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-performance
On Apr 4, 2005, at 12:54 AM, Tom Lane wrote:

> mark.lubratt@indeq.com writes:
>> I'm trying to optimize a query and the EXPLAIN ANALYZE (see link
>> below)
>> shows that some hash join row estimates are wrong by a factor of 2-3,
>> and upwards of 7-8.
>
> I doubt that improving those estimates would lead to markedly better
> results.  You need to think about improving the view design instead.
> What context is this view used in --- do you just do "select * from
> view_get_all_user_award2", or are there conditions added to it, or
> perhaps it gets joined with other things?

Yes.  I forgot to show how the query is executed...

select * from view_get_all_user_award2 where person_id = 1;


>   Do you really need the
> DISTINCT constraint?

Yes.

> Do you really need the ORDER BY?

The customer wants an initial ordering in the displayed data.

> Can you
> simplify the WHERE clause at all?
>

I originally had a bunch of LEFT JOINs.  After reading Tow's "SQL
Tuning", I was hoping to steer the planner into a more "optimal" plan
by using a large where clause instead and doing the joins there (I
think they're called implicit joins).  I was able to shave a couple of
hundred milliseconds off the execution time by doing this.

> Half a second sounds pretty decent to me for a ten-way join with a
> WHERE
> clause as unstructured as that.  If you really need it to execute in
> way
> less time, you're probably going to have to rethink your data
> representation to make the query simpler.
>

Unfortunately, I'm not sure I can restructure the data.  I did consider
materialized views.  However, they couldn't be lazy and that seemed
like a lot of extra work for the backend for very little improvement.

If this sounds like decent performance to you...  I guess I can just
tell the complainers that it's as good as it's going to get (barring a
major hardware upgrade...).

Thanks!
Mark


pgsql-performance by date:

Previous
From: Tom Lane
Date:
Subject: Re: Correcting Hash Join Estimates
Next
From: bsimon@loxane.com
Date:
Subject: Postgresql vs SQLserver for this application ?