Re: reindex vs 'analyze' (was: Re: cube operations slower than geo_distance() on production server) - Mailing list pgsql-performance

From Tom Lane
Subject Re: reindex vs 'analyze' (was: Re: cube operations slower than geo_distance() on production server)
Date
Msg-id 26766.1171476443@sss.pgh.pa.us
Whole thread Raw
In response to reindex vs 'analyze' (was: Re: cube operations slower than geo_distance() on production server)  (Mark Stosberg <mark@summersault.com>)
Responses Re: reindex vs 'analyze'
Re: reindex vs 'analyze'
List pgsql-performance
Mark Stosberg <mark@summersault.com> writes:
> Your suggestion about the pet_state index was right on. I tried
> "Analyze" on it, but still got the same bad estimate. However, I then
> used "reindex" on that index, and that fixed the estimate accuracy,
> which made the query run faster!

No, the estimate is about the same, and so is the plan.  The data seems
to have changed though --- on Monday you had

    ->  Bitmap Index Scan on pets_pet_state_idx  (cost=0.00..562.50 rows=39571 width=0) (actual time=213.620..213.620
rows=195599loops=82) 
           Index Cond: ((pet_state)::text = 'available'::text)

and now it's

     ->  Bitmap Index Scan on pets_pet_state_idx  (cost=0.00..285.02 rows=41149 width=0) (actual time=22.043..22.043
rows=40397loops=82) 
           Index Cond: ((pet_state)::text = 'available'::text)

Don't tell me you got 155000 pets adopted out yesterday ... what
happened here?

[ thinks... ] One possibility is that those were dead but
not-yet-vacuumed rows.  What's your vacuuming policy on this table?
(A bitmap-index-scan plan node will count dead rows as returned,
unlike all other plan node types, since we haven't actually visited
the heap yet...)

            regards, tom lane

pgsql-performance by date:

Previous
From: Kenji Morishige
Date:
Subject: Re: quad or dual core Intel CPUs
Next
From: "Guillaume Smet"
Date:
Subject: Re: Proximity query with GIST and row estimation