PostgreSQL: Índices

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

PostgreSQL: Índices

Este tutorial de PostgreSQL explica cómo Crear, soltar y renombrar índices Viene con sintaxis y ejemplos en PostgreSQL.

¿Qué son los índices en PostgreSQL?

La indexación es un método de ajuste del rendimiento que permite una recuperación más rápida de los registros. Un índice crea una entrada para cada valor que aparece en la columna indexada.

crear índice

Puede crear índices en PostgreSQL utilizando la instrucción CREATE INDEX.

sintaxis

La sintaxis para crear un índice usando la instrucción CREATE INDEX en PostgreSQL es:

CREATE [UNIQUE] INDEX [CONCURRENTLY] index_name
  [ USING BTREE | HASH | GIST | SPGIST | GIN ]
  ON table_name
    (index_col1 [ASC | DESC], 
     index_col2 [ASC | DESC],
     ...
     index_col_n [ASC | DESC]);

Solo opcional. El modificador ÚNICO indica que la combinación de valores en la columna indexada debe ser única. También opcional. Cuando se crea un índice, no bloquea la tabla. De forma predeterminada, la tabla está bloqueada cuando se crea el índice. index_name El nombre asignado al índice. table_name El nombre de la tabla en la que se va a crear el índice. index_col1, index_col2, … index_col_n Columnas a utilizar en el índice. ASC es opcional. El índice se ordena en orden ascendente por esa columna. DESC opcional. El índice se ordena en orden descendente por esa columna.

ejemplo

Veamos un ejemplo de cómo crear un índice en PostgreSQL.

Por ejemplo:

CREATE INDEX order_details_idx
  ON order_details (order_date);

En este ejemplo, la sentencia CREATE INDEX creará un índice denominado order_details_idx, que consiste en el campo order_date.

índice único

Para crear un índice único en una tabla, especifique la palabra clave ÚNICA al crear el índice.

Por ejemplo:

CREATE UNIQUE INDEX order_details_idx
  ON order_details (order_date, note);

En este ejemplo, crearemos un índice único en la tabla detalles_pedido que consiste en los campos fecha_pedido y nota, por lo que la combinación de estos campos siempre debe contener un valor único sin duplicados. Esta es una excelente manera de hacer cumplir la integridad en la base de datos si necesita valores únicos en columnas que no forman parte de la clave principal.

índice de caída

Puede eliminar índices en PostgreSQL utilizando la instrucción DROP INDEX.

sintaxis

La sintaxis para eliminar un índice usando la instrucción DROP INDEX en PostgreSQL es:

DROP INDEX [CONCURRENTLY] [IF EXISTS] index_name
  [ CASCADE | RESTRICT ];

También opcional. Al soltar un índice, no bloquea la tabla. De forma predeterminada, cuando se quita un índice de una tabla, la tabla se bloquea. Opcional si está presente. Si se especifica, la instrucción DROP INDEX no generará un error si el índice no existe. index_name El nombre del índice a descartar. La conexión en cascada es opcional. Todos los objetos que dependen de este índice también se eliminarán. Las restricciones son opcionales. Si hay objetos que dependen del índice, el índice no se eliminará.

ejemplo

Veamos un ejemplo de cómo soltar un índice en PostgreSQL.

Por ejemplo:

DROP INDEX order_details_idx;

En este ejemplo, eliminamos el índice denominado website_idx de la tabla de sitios web.

renombrar índice

Puede usar la declaración ALTER INDEX para cambiar el nombre de los índices en PostgreSQL.

sintaxis

La sintaxis para cambiar el nombre de un índice utilizando la instrucción ALTER INDEX es:

ALTER INDEX [IF EXISTS] index_name,
  RENAME TO new_index_name;

Opcional si está presente. Si se especifica, la instrucción ALTER INDEX no generará un error si el índice no existe. index_name El nombre del índice para cambiar el nombre. new_index_name El nuevo nombre del índice.

ejemplo

Veamos un ejemplo de cómo renombrar un índice en PostgreSQL.

Por ejemplo:

ALTER INDEX order_details_idx
  RENAME TO od_new_index;

En este ejemplo, cambiamos el nombre del índice llamado order_details_idx a od_new_index.