Thread: Relation of indices to ANALYZE

Relation of indices to ANALYZE

From
Bill Moran
Date:
Hello all,

I'm putting together a database that has me wondering about the interaction of ANALYZE
with indices.  I guess the basic question is: are indices affected by the results of
ANALYZE.

The particular application I've got is doing a batch insert of lots of records.  For
performance, I'm dropping the indexes on the table, doing the inserts, then recreating
the indexes a then doing a VACUUM ANALYZE.  Specifically, I'm wondering if I should do
the ANALYZE before or after I recreate the indexes, or whether it matters.

Any feedbackis welcome.

--
Bill Moran
Potential Technologies
http://www.potentialtech.com


Re: Relation of indices to ANALYZE

From
Richard Huxton
Date:
On Thursday 17 Jul 2003 3:45 pm, Bill Moran wrote:
> Hello all,
>
> I'm putting together a database that has me wondering about the interaction
> of ANALYZE with indices.  I guess the basic question is: are indices
> affected by the results of ANALYZE.
>
> The particular application I've got is doing a batch insert of lots of
> records.  For performance, I'm dropping the indexes on the table, doing the
> inserts, then recreating the indexes a then doing a VACUUM ANALYZE.
> Specifically, I'm wondering if I should do the ANALYZE before or after I
> recreate the indexes, or whether it matters.

I don't think it matters - the analyse looks at the data, and then when you
run a query the planner estimates how many rows each clause will require and
checks if there is an index that will help.
--
  Richard Huxton

Re: Relation of indices to ANALYZE

From
Tom Lane
Date:
Bill Moran <wmoran@potentialtech.com> writes:
> Specifically, I'm wondering if I should do
> the ANALYZE before or after I recreate the indexes, or whether it matters.

At the moment it does not matter --- ANALYZE computes statistics for
each column of a table regardless of what indexes exist.

There has been some talk of trying to compute statistics for the
contents of functional indexes.  Also, if we ever do anything about
computing multicolumn correlation statistics, we'd likely choose which
ones are worth computing based on the presence of multicolumn indexes.
So if you want to future-proof your code I'd recommend recreating the
indexes before you ANALYZE.

            regards, tom lane

Re: Relation of indices to ANALYZE

From
Bill Moran
Date:
Tom Lane wrote:
> Bill Moran <wmoran@potentialtech.com> writes:
>
>>Specifically, I'm wondering if I should do
>>the ANALYZE before or after I recreate the indexes, or whether it matters.
>
>
> At the moment it does not matter --- ANALYZE computes statistics for
> each column of a table regardless of what indexes exist.
>
> There has been some talk of trying to compute statistics for the
> contents of functional indexes.  Also, if we ever do anything about
> computing multicolumn correlation statistics, we'd likely choose which
> ones are worth computing based on the presence of multicolumn indexes.
> So if you want to future-proof your code I'd recommend recreating the
> indexes before you ANALYZE.

Thanks, Tom (and everyone else who replied).

I'm already recreating the indices prior to the VACUUM ANALYZE, since this
puts the database back in a more usable state faster than doing the
VACUUM first.  It's good to know that it will probably be the proper way
to do things in the future as well.

--
Bill Moran
Potential Technologies
http://www.potentialtech.com