In some situations it is worthwhile to rebuild indexes periodically
- with the
- command.
+ with the command or a series of individual
+ rebuilding steps.
+
(This consideration does not apply to non-B-tree indexes.) It
might be worthwhile to reindex periodically just to improve access speed.
+
+ can be used safely and easily in all cases.
+ But since the command requires an exclusive table lock, it is
+ often preferable to execute an index rebuild with a sequence of
+ creation and replacement steps. Index types that support
+ with the CONCURRENTLY>
+ option can instead be recreated that way. If that is successful and the
+ resulting index is valid, the original index can then be replaced by
+ the newly built one using a combination of
+ and . When an index is used to enforce
+ uniqueness or other constraints, might
+ be necessary to swap the existing constraint with one enforced by
+ the new index. Review this alternate multi-step rebuild approach
+ carefully before using it as there are limitations on which
+ indexes can be reindexed this way, and errors must be handled.
+
- If a problem arises while scanning the table, such as a
+ If a problem arises while scanning the table, such as a deadlock or a
uniqueness violation in a unique index, the CREATE INDEX>
command will fail but leave behind an invalid> index. This index
will be ignored for querying purposes because it might be incomplete;