On Thu, Sep 11, 2014 at 7:09 AM, Matheus de Oliveira <
matioli.math...@gmail.com> wrote:

>
> On Wed, Sep 10, 2014 at 10:05 PM, Huang, Suya <suya.hu...@au.experian.com>
> wrote:
>
>> --plan 1, 10 seconds were spent on sequential scan on term_weekly table.
>>
>>
>>
>> dev=# explain analyze select distinct  cs_id from lookup_weekly  n inner
>> join term_weekly s on s.b_id=n.b_id and s.date=n.date where term in
>> ('cat'::text);
>>
>>
>>
>>
>>
>>
>> QUERY PLAN
>>
>>
>> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> HashAggregate  (cost=2100211.06..2100211.11 rows=5 width=4) (actual
>> time=27095.470..27095.487 rows=138 loops=1)
>> ...
>>
>>
>>
>> --plan 2, only 1 second spent on index scan of term_weekly table,
>> however, as it selects the big table to do the hashing, it takes 22 seconds
>> for the hash to complete. The advantage get from index has been totally
>> lost because of this join order.
>>
>>
>>
>>
>> QUERY PLAN
>>
>>
>> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> HashAggregate  (cost=1429795.17..1429795.22 rows=5 width=4) (actual
>> time=22991.289..22991.307 rows=138 loops=1)
>> ...
>
>
> Am I reading something wrong here? I haven't looked all the plan, but the
> second is faster (overall), so why do you think you need a hint or change
> what the planner choose? For me looks like using the index is the best for
> this situation. Could you try running this multiple times and taking the
> min/max/avg time of both?
>

The difference in time could be a caching effect, not a reproducible
difference.

The 2nd plan uses 3GB of memory, and there might be better uses for that
memory.

Currently memory is un-costed, other than "cliff costing" once you thinks
it will exceed work_mem, which I think is a problem.  Just because I will
let you use 4GB of memory if you will really benefit from it, doesn't mean
you should use 4GB gratuitously.


Suya, what happens if you lower work_mem setting?  Does it revert to the
plan you want?

Cheers,

Jeff

Reply via email to