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.
Tabla de Contenidos
ocultar
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.