Is REINDEX dangerous?
Reindexing is not dangerous and can not harm data consistency. However, if you have time critical writes, you may loose data if the table is locked and the DML is aborted.
Reindexing should not take a lot of time, but will usually involve reading the whole table, sorting the index fields and writing a new index. Given the time for COUNT(*)
it will likely take five minutes or more.
It is unlikely this is an indexing problem. COUNT(*)
should use a table scan in which case no index is read. I would expect you have an IO problem of some sort.
Try using COUNT(1)
or COUNT(pk_field)
which may use the index.
If you are running on a Unix or Linux platform you may want to monitor disk activity with sar
. You might also have a failing disk which can cut IO rates dramatically.
Tables with large objects can also increase IO significantly to construct the records for COUNT(*).