Reconstruir indice usando REINDEX en PostgreSQL

En este artículo veremos cómo reconstruir índice usando REINDEX en PostgreSQL ya que en muchas ocasiones los índices pueden no ser válidos o corromperse. Si no conoces lo que es un índice o quieres aprender a crearlo puedes leer este otro artículo.

Sintaxis

La sintaxis para reconstruir un índice es la siguiente:

REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } name;

En la sintaxis anterior:

  • Destacar que al especificar la palabra opcional VERBOSE le estamos indicando que nos muestre un informe de progreso.

Regenar un indice

REINDEX INDEX index_name;

Regenerar todos los indices de una tabla

REINDEX TABLE table_name;   

Regenerar todos los indices de un esquema

REINDEX SCHEMA schema_name;   

Regenerar todos los indices de una BBDD

REINDEX DATABASE database_name;

Regenerar todos los indices del catalogo sistema

REINDEX SYSTEM database_name;

Diferencias entre recrear o borrar y crear

Con ambos se consigue recrear el índice aunque no son del todo iguales en cómo lo realizan.

REINDEX

  • Bloquea las escrituras pero no las lecturas de la tabla a la que pertenece el índice.
  • Realiza un bloqueo exclusivo en el índice que se está procesando, que bloquea las lecturas que intentan usar el índice.

DROP & CREATE

  • DROP INDEX bloquea tanto las escrituras como las lecturas de la tabla a la que pertenece el índice adquiriendo un bloqueo exclusivo en la tabla.
  • CREATE INDEX bloquea las escrituras pero no las lecturas de la tabla principal del índice. Sin embargo, las lecturas pueden ser costosas durante la creación del índice.

Escribir un comentario