Re: Expression index ignores column statistics target - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Expression index ignores column statistics target
Date
Msg-id 5335.1128142383@sss.pgh.pa.us
Whole thread Raw
In response to Expression index ignores column statistics target  (Michael Fuhr <mike@fuhr.org>)
Responses Re: Expression index ignores column statistics target
Re: Expression index ignores column statistics target
Re: Expression index ignores column statistics target
List pgsql-hackers
Michael Fuhr <mike@fuhr.org> writes:
> I've noticed that row count estimates for expression indexes appear
> to rely on default_statistics_target rather than on a column's
> actual statistics target.  That is, if I use ALTER TABLE SET
> STATISTICS to increase a column's statistics target and then run
> ANALYZE, then estimates for non-expression-index queries improve
> as expected.  However, queries that use an expression index remain
> accurate for only around the N most common values, where N is the
> default_statistics_target that was in effect when ANALYZE ran.

The code does in fact honor per-column statistics targets attached to
expression indexes, viz

alter table myfuncindex alter column pg_expression_1 set statistics 100;

This isn't documented, mainly because pg_dump doesn't promise to dump
such things, which it doesn't do because I didn't want to see the
"pg_expression_N" naming for expression index columns become graven on
stone tablets.  I seem to recall bringing up the question of whether
we could find a less implementation-specific way of commanding this
behavior, but I can't find it in the archives right now.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Expression index ignores column statistics target
Next
From: Michael Fuhr
Date:
Subject: Re: Expression index ignores column statistics target