Re: [SQL] How to optimize a query... - Mailing list pgsql-sql

From secret
Subject Re: [SQL] How to optimize a query...
Date
Msg-id 36E691DC.3EA90B99@kearneydev.com
Whole thread Raw
In response to How to optimize a query...  (secret <secret@kearneydev.com>)
List pgsql-sql
secret wrote:

>     I originally had this query with an OR clause instead of the UNION,
> which made it amazingly impossibly slow, with the UNION it's far faster
> however it's still very slow,(10,000+ rows in both stables), is there a
> way to speed this up?  I have BTREE indexes on all concerned fields of
> the tables, but it doesn't seem to use any of them...
>
>     I have another query that joins the result of this with 5 other
> tables, unfortunately that one takes like 10 minutes...  Any suggestions
> on optimizations would be very appreciated.
>
> ftc=> explain
> ftc-> select po_id,ticket_pk
> ftc-> from tickets,po
> ftc-> where po_id=material_po
> ftc-> union
> ftc-> select po_id,ticket_pk
> ftc-> from tickets,po
> ftc-> where po_id=trucking_po
> ftc-> ;
> NOTICE:  QUERY PLAN:
>
> Unique  (cost=4744.05 size=0 width=0)
>   ->  Sort  (cost=4744.05 size=0 width=0)
>         ->  Append  (cost=4744.05 size=0 width=0)
>                 ->  Hash Join  (cost=2372.03 size=11659303 width=12)
>                       ->  Seq Scan on tickets  (cost=849.03 size=19213
> width=8)
>                       ->  Hash  (cost=0.00 size=0 width=0)
>                             ->  Seq Scan on po  (cost=528.98 size=10848
> width=4)
>                 ->  Hash Join  (cost=2372.03 size=13838477 width=12)
>                       ->  Seq Scan on tickets  (cost=849.03 size=19213
> width=8)
>                       ->  Hash  (cost=0.00 size=0 width=0)
>                             ->  Seq Scan on po  (cost=528.98 size=10848
> width=4)
>
> EXPLAIN

    I'm having a lot of problems with performance under PostgreSQL, it seems
most of my major queries arn't using indexes(as above)... tickets has 15k
tables, 10k tables... The above query takes about 4 minutes...

    Unfortunately I need to add in joins to about 5 tables.... If I add one
more table it's 10 minutes... 2?  Who knows, I know by 5 it's unacceptable,
can anyone please give me some advise on what my problems might be with
queries?  I've done VACUUM ANALYZE ... I didn't used to do that, could it be
missing data from way back?  Should I reload the entire database?

--David


pgsql-sql by date:

Previous
From: Tom Lane
Date:
Subject: Re: [SQL] Performance
Next
From: Stuart Rison
Date:
Subject: DISTINCT within aggregates.