Re: Very strange query difference between 7.3.6 and 7.4.6 - Mailing list pgsql-hackers

From Joshua D. Drake
Subject Re: Very strange query difference between 7.3.6 and 7.4.6
Date
Msg-id 1111431537.19676.23.camel@jd2.commandprompt.com
Whole thread Raw
In response to Re: Very strange query difference between 7.3.6 and 7.4.6  ("Joshua D. Drake" <jd@commandprompt.com>)
Responses Re: Very strange query difference between 7.3.6 and 7.4.6  ("Joshua D. Drake" <jd@commandprompt.com>)
List pgsql-hackers
Hello,

O.k. here is a great one for you. Here are some further comparisons:

8.0.1 FC3 64bit:

foo=# explain analyze SELECT t.topic_id, t.topic_title, t.topic_status,
t.topic_replies, t.topic_time, t.topic_type, t.topic_vote,
t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id,
f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit,
f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate,
f.auth_vote, f.auth_attachments, COUNT(p.post_id) AS prev_posts
foo-#                 FROM nuke_bbtopics t, nuke_bbforums f,
nuke_bbposts p
foo-#                 WHERE p.post_id = 624854 AND t.topic_id =
p.topic_id
foo-#                 AND p.topic_id = p.topic_id AND p.post_id <=
624854
foo-#                         AND f.forum_id = t.forum_id
foo-#                         GROUP BY p.post_id, t.topic_id,
t.topic_title, t.topic_status, t.topic_replies, t.topic_time,
t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name,
f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post,
f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky,
f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments
ORDER BY p.post_id ASC;

QUERY PLAN

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroupAggregate (cost=13.44..13.51 rows=1 width=404) (actual time=0.233..0.234 rows=1 loops=1)  ->  Sort
(cost=13.44..13.45rows=1 width=404) (actual
 
time=0.196..0.196 rows=1 loops=1)        Sort Key: p.post_id, t.topic_id, t.topic_title, t.topic_status,
t.topic_replies, t.topic_time, t.topic_type, t.topic_vote,
t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id,
f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit,
f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate,
f.auth_vote, f.auth_attachments        ->  Nested Loop  (cost=0.00..13.43 rows=1 width=404) (actual
time=0.098..0.129 rows=1 loops=1)              Join Filter: ("inner".forum_id = "outer".forum_id)              ->
NestedLoop  (cost=0.00..12.03 rows=1 width=287)
 
(actual time=0.071..0.075 rows=1 loops=1)                    ->  Index Scan using nuke_bbposts_pkey on
nuke_bbposts p  (cost=0.00..6.02 rows=1 width=8) (actual
time=0.045..0.046 rows=1 loops=1)                          Index Cond: ((post_id = 624854) AND (post_id
<= 624854))                          Filter: (topic_id = topic_id)                    ->  Index Scan using
nuke_bbtopics_pkeyon
 
nuke_bbtopics t  (cost=0.00..6.00 rows=1 width=283) (actual
time=0.012..0.014 rows=1 loops=1)                          Index Cond: (t.topic_id = "outer".topic_id)              ->
SeqScan on nuke_bbforums f  (cost=0.00..1.18 rows=18
 
width=119) (actual time=0.004..0.018 rows=18 loops=1)Total runtime: 0.530 ms
(13 rows)

7.4.6 FC3 64bit:


rp_nuke=# explain analyze SELECT t.topic_id, t.topic_title,
t.topic_status, t.topic_replies, t.topic_time, t.topic_type,
t.topic_vote, t.topic_last_post_id, f.forum_name, f.forum_status,
f.forum_id, f.auth_view, f.auth_read, f.auth_post, f.auth_reply,
f.auth_edit, f.auth_delete, f.auth_sticky, f.auth_announce,
f.auth_pollcreate, f.auth_vote, f.auth_attachments, COUNT(p.post_id) AS
prev_posts
rp_nuke-#                 FROM nuke_bbtopics t, nuke_bbforums f,
nuke_bbposts p
rp_nuke-#                 WHERE p.post_id = 624854 AND t.topic_id =
p.topic_id
rp_nuke-#                 AND p.topic_id = p.topic_id AND p.post_id <=
624854
rp_nuke-#                         AND f.forum_id = t.forum_id
rp_nuke-#                         GROUP BY p.post_id, t.topic_id,
t.topic_title, t.topic_status, t.topic_replies, t.topic_time,
t.topic_type, t.topic_vote, t.topic_last_post_id, f.forum_name,
f.forum_status, f.forum_id, f.auth_view, f.auth_read, f.auth_post,
f.auth_reply, f.auth_edit, f.auth_delete, f.auth_sticky,
f.auth_announce, f.auth_pollcreate, f.auth_vote, f.auth_attachments
ORDER BY p.post_id ASC
rp_nuke-#
rp_nuke-# ;

QUERY PLAN

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GroupAggregate (cost=10.18..10.25 rows=1 width=324) (actual time=0.502..0.502 rows=1 loops=1)  ->  Sort
(cost=10.18..10.18rows=1 width=324) (actual
 
time=0.460..0.461 rows=1 loops=1)        Sort Key: p.post_id, t.topic_id, t.topic_title, t.topic_status,
t.topic_replies, t.topic_time, t.topic_type, t.topic_vote,
t.topic_last_post_id, f.forum_name, f.forum_status, f.forum_id,
f.auth_view, f.auth_read, f.auth_post, f.auth_reply, f.auth_edit,
f.auth_delete, f.auth_sticky, f.auth_announce, f.auth_pollcreate,
f.auth_vote, f.auth_attachments        ->  Nested Loop  (cost=0.00..10.17 rows=1 width=324) (actual
time=0.190..0.206 rows=1 loops=1)              ->  Nested Loop  (cost=0.00..6.69 rows=1 width=287)
(actual time=0.143..0.146 rows=1 loops=1)                    ->  Index Scan using nuke_bbposts_pkey on
nuke_bbposts p  (cost=0.00..3.21 rows=1 width=8) (actual
time=0.094..0.095 rows=1 loops=1)                          Index Cond: ((post_id = 624854) AND (post_id
<= 624854))                          Filter: (topic_id = topic_id)                    ->  Index Scan using
nuke_bbtopics_pkeyon
 
nuke_bbtopics t  (cost=0.00..3.46 rows=1 width=283) (actual
time=0.029..0.030 rows=1 loops=1)                          Index Cond: (t.topic_id = "outer".topic_id)              ->
IndexScan using nuke_bbforums_pkey on nuke_bbforums
 
f  (cost=0.00..3.47 rows=1 width=39) (actual time=0.030..0.041 rows=1
loops=1)                    Index Cond: (f.forum_id = "outer".forum_id)Total runtime: 1.126 ms
(13 rows)

Sincerely,

Joshua D. Drake



On Sun, 2005-03-20 at 20:21 -0800, Joshua D. Drake wrote:
> Tom Lane wrote:
> 
> >"Joshua D. Drake" <jd@commandprompt.com> writes:
> >  
> >
> >>O.k. I got 7.3.9 to operate as expected on FC2 (64bit) and these are my 
> >>results:
> >>    
> >>
> >
> >  
> >
> >>enable_hashagg on:
> >>    
> >>
> >
> >  
> >
> >> HashAggregate  (cost=80.00..82.50 rows=1000 width=404) (actual 
> >>time=209.746..209.750 rows=1 loops=1)
> >>    
> >>
> >
> >You got confused somewhere along the line, because 7.3 doesn't have
> >hash aggregation ...
> >  
> >
> DOH! You are correct. Heh... Anyway here is the real 7.3.9
> on FC2 64bit plan:
> RY 
> PLAN
                                    
 
> 
>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>  Aggregate  (cost=69.83..132.33 rows=100 width=404) (actual 
> time=771.96..771.96 rows=1 loops=1)
>    ->  Group  (cost=69.83..129.83 rows=1000 width=404) (actual 
> time=579.98..767.54 rows=8845 loops=1)
>          ->  Sort  (cost=69.83..72.33 rows=1000 width=404) (actual 
> time=579.96..590.00 rows=8845 loops=1)
>                Sort Key: post_id, topic_id, topic_title, topic_status, 
> topic_replies, topic_time, topic_type, topic_vote, topic_last_post_id, 
> forum_name, forum_status, forum_id, auth_view, auth_read, auth_post, 
> auth_reply, auth_edit, auth_delete, auth_sticky, auth_announce, 
> auth_pollcreate, auth_vote, auth_attachments
>                ->  Seq Scan on foo  (cost=0.00..20.00 rows=1000 
> width=404) (actual time=0.05..107.62 rows=8845 loops=1)
>  Total runtime: 774.57 msec
> (6 rows)
> 
> 
> 
> 
> >            regards, tom lane
> >
> >---------------------------(end of broadcast)---------------------------
> >TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >  
> >
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
-- 
Command Prompt, Inc., Your PostgreSQL solutions company. 503-667-4564
Custom programming, 24x7 support, managed services, and hosting
Open Source Authors: plPHP, pgManage, Co-Authors: plPerlNG
Reliable replication, Mammoth Replicator - http://www.commandprompt.com/



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Prevent conflicting SET options from being set
Next
From: Robert Treat
Date:
Subject: Re: what to do with backend flowchart