Thread: Is Optimizer smart enough?

Is Optimizer smart enough?

From
tmorelli@tmorelli.com.br
Date:
Hi,

Just for curiosity: suppose there is an excellent index frequently picked by
the optimizer. Suppose now that this index became extremelly fragmented with
thousands of updates. Without a REINDEX, will Optimizer still pick it? Or the
optimizer is smart enough to detect index fragmentation and discard it?

Is there something that I could do in btcostesimate function to detect
increasing index fragmentation?

best regards,

Eduardo Morelli


Re: Is Optimizer smart enough?

From
Tom Lane
Date:
tmorelli@tmorelli.com.br writes:
> Just for curiosity: suppose there is an excellent index frequently picked by
> the optimizer. Suppose now that this index became extremelly fragmented with
> thousands of updates. Without a REINDEX, will Optimizer still pick it? Or the
> optimizer is smart enough to detect index fragmentation and discard it?

IIRC, btcostestimate is sensitive to the physical size of the index,
so it would catch the first-order effect of index bloat.  It wouldn't
notice index fragmentation in the sense of increasingly random location
of logically-sequential leaf pages.  But I'm not sure how much that
matters for typical situations.  If you have a huge fraction of dead
tuples, I'd say that index fragmentation is not your worst problem...
        regards, tom lane