2010/4/6 Björn Lindqvist <bjou...@gmail.com>

> Den 5 april 2010 11.57 skrev Magnus Hagander <mag...@hagander.net>:
> >> Note how the planner estimates that there are 766 rows in the table
> >> that matches the word 'tagtext'. In reality 43374 does. I've tried to
> >> get postgres to refresh the statistics by running with
> >> enable_statistics_target=100, running VACUUM, VACUUM FULL, VACUUM FULL
> >> ANALYZE etc but nothing works. Postgres seem stuck with its bad
> >> statistics and unwilling to change them. There are many other strings
> >> that also matches tens of thousands of rows in the table which
> >> postgres only thinks matches 766.
>

Have you tried running :

 'EXPLAIN ANALYZE <your query>'

?

  This will show you the estimates and the actuals (for each operation) side
by side.

--Scott


> >
> > I assume you mean default_statistics_target, not
> enable_statistics_target.
>
> Yes, sorry.
>
> > You should try setting it higher - but obviously just for these
> > columns. Use something like
> >
> > ALTER TABLE words ALTER COLUMN word SET STATISTICS 1000
> >
> > Then you need to run ANALYZE on it. Not vacuum ,certainly not vacuum
> > full, just analyze.
>
> Done that and it doesn't help. The estimates are always off for the
> query of the type I specified.
>
> > Oh, and if what you're doing is actually full text search, which is
> > what it looks like, you should really look at using the native full
> > text indexing support rather than just stuffing your words in a table.
> > You'll get better and much faster results.
>
> It is more "full tag search" because I'm not using any word stemming,
> phrase matching or OR:ing query terms. It was, when I measured it,
> significantly faster than using the native text searching feature.
>
>
>
> --
> mvh Björn
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

Reply via email to