join optimization problem - Mailing list pgsql-sql
From | Toby Tremayne |
---|---|
Subject | join optimization problem |
Date | |
Msg-id | 200307281412.36981.toby@lyricist.com.au Whole thread Raw |
Responses |
Re: join optimization problem
Re: join optimization problem |
List | pgsql-sql |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi all, I'm trying to optimize what I had thought was a simple enough query but I'm not having much success. It's from a forum based application, and the query in question is operating on two tables - fbof_msg (8563 rows) and fbof_thread(1537 rows) and it looks like this: select t.thread_id, t.forum_id, t.thread_title, t.thread_owner, t.thread_owner_id, t.date_created, t.thread_hits, t.poem_reference, t.bArchived, count(m.msg_id) as msgcount, max(m.date_created) as lastpostfrom fbof_thread t LEFT OUTER JOIN fbof_msg m ON m.thread_id = t.thread_idwhere t.forum_id = 1and t.bArchived= 0and t.bSticky = 0group by t.thread_id, t.thread_title, t.thread_owner, t.thread_owner_id, t.date_created, t.thread_hits, t.forum_id, t.poem_reference, t.bArchived, t.bStickyorder by t.date_created desc the explain data I'm currently getting is this: Sort (cost=1660930.18..1660946.63 rows=6581 width=568) Sort Key: max(m.date_created) -> Aggregate (cost=0.00..1659452.99rows=6581 width=568) -> Group (cost=0.00..1659123.95 rows=65807 width=568) -> Nested Loop (cost=0.00..1657643.30 rows=65807 width=568) Join Filter: (("outer".thread_id)::doubleprecision = "inner".thread_id) -> Index Scan using fbof_group_idx on fbof_thread t (cost=0.00..642.03 rows=1537 width=548) Filter: ((forum_id = 1::double precision) AND (barchived = 0) AND (bsticky = 0)) -> Seq Scan on fbof_msg m (cost=0.00..949.63 rows=8563 width=20) (9 rows) The index it's using is the only one I've been able to get it to use, and looks like this: (\d fbof_group_idx) Index "public.fbof_group_idx" Column | Type - -----------------+------------------thread_id | integerthread_title | character(255)thread_owner | character(255)thread_owner_id| integerdate_created | datethread_hits | integerforum_id | double precisionpoem_reference | integerbarchived | smallint btree, for table "public.fbof_thread" can anyone point out to me where I'm going wrong here? I can't seem to make it faster for the life of me.... I've tried adding indices on all the main fields etc but nada. I'm not subscribed the list currently so please reply to my address as well as the list. cheers, Toby - -- - -------------------------------- Life is poetry - write it in your own words - -------------------------------- Toby Tremayne Code Poet and Zen Master of the Heavy Sleep Senior Technical Consultant Lyricist Software www.lyricist.com.au +61 416 048 090 ICQ: 13107913 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux) iD8DBQE/JKKz6KYxVcB16DkRAjl+AKCCrZswP4TL9aAzZUs7CkY9ajjoYwCfZO/v SGR8GSi++ZZ+DrNXicabzvo= =kx4x -----END PGP SIGNATURE-----