Re: planner regression in 8.4 (from 8.1)
От | Robert Haas |
---|---|
Тема | Re: planner regression in 8.4 (from 8.1) |
Дата | |
Msg-id | 603c8f071002210428j31e59e52x4e19bcf1452d3db2@mail.gmail.com обсуждение исходный текст |
Ответ на | planner regression in 8.4 (from 8.1) (Ben Chobot <bench@silentmedia.com>) |
Ответы |
Re: planner regression in 8.4 (from 8.1)
|
Список | pgsql-bugs |
On Wed, Feb 17, 2010 at 1:06 PM, Ben Chobot <bench@silentmedia.com> wrote: > -> Hash (cost=3D153.63..153.63 rows=3D2178408 width=3D4) (actu= al time=3D0.207..0.207 rows=3D1 loops=3D1) > -> Nested Loop (cost=3D4.58..153.63 rows=3D2178408 width= =3D4) (actual time=3D0.203..0.204 rows=3D1 loops=3D1) > -> HashAggregate (cost=3D4.58..4.59 rows=3D1 width= =3D4) (actual time=3D0.145..0.146 rows=3D1 loops=3D1) > -> Nested Loop (cost=3D2.28..4.57 rows=3D1 w= idth=3D4) (actual time=3D0.142..0.143 rows=3D1 loops=3D1) > -> HashAggregate (cost=3D2.28..2.29 ro= ws=3D1 width=3D4) (actual time=3D0.093..0.093 rows=3D1 loops=3D1) > -> Index Scan using pro_partners_= tree_sortkey_idx on pro_partners (cost=3D0.00..2.28 rows=3D1 width=3D4) (a= ctual time=3D0.076..0.076 rows=3D1 loops=3D1) > Index Cond: ((tree_sortkey >= =3D B'000000000000000110000000000000001111010011011010'::bit varying) AND (= tree_sortkey <=3D B'0000000000000001100000000000000011110100110110101111111= 1111111111111111111111111'::bit varying)) > -> Index Scan using user_groups_pro_par= tner_id_idx on user_groups (cost=3D0.00..2.27 rows=3D1 width=3D8) (actual = time=3D0.046..0.047 rows=3D1 loops=3D1) > Index Cond: (user_groups.pro_partn= er_id =3D pro_partners.id) > -> Index Scan using users_user_groups_idx on users = (cost=3D0.00..147.14 rows=3D152 width=3D8) (actual time=3D0.057..0.057 row= s=3D1 loops=3D1) > Index Cond: (users.user_group_id =3D user_grou= ps.id) > Filter: (NOT users.deleted) [...] > > Note the nested loop with 2 million expected rows, though its inner nodes > are only expected to have 1 and 152 each. As you say, this is the part that looks pretty weird. I *think* that the number of rows for the nestloop is being set by set_joinrel_size_estimates() by this line of code: nrows =3D outer_rel->rows * inner_rel->rows * jselec; That seems like it implies a ridiculously large value for jselec, but jsele= c is: jselec =3D clauselist_selectivity(root, restrictlist, 0, jointype, sjinfo); ...and I don't really see how that can turn out to be anything too crazy. Is there any chance you can extract a reproducible test case for this problem that doesn't involve your private data? ...Robert
В списке pgsql-bugs по дате отправления: