PostgreSQL – ÍNDICES

Los índices son tablas de búsqueda especiales que un motor de búsqueda de bases de datos puede utilizar para acelerar las búsquedas de datos. En términos simples, un índice es un puntero a datos en una tabla. Un índice en una base de datos es muy similar a un índice al final de un libro.

Por ejemplo, si desea hacer referencia a todas las páginas de un libro que trata un tema específico, primero debe consultar un índice que enumere todos los temas en orden alfabético y luego especificar uno o más números de página específicos.

El índice ayuda a acelerar las consultas SELECT y las cláusulas WHERE; sin embargo, ralentiza la entrada de datos con declaraciones UPDATE e INSERT. Los índices se pueden crear o eliminar sin afectar los datos.

La creación de índices incluye una instrucción CREATE INDEX que le permite nombrar el índice, especificar la tabla y la columna o columnas a indexar e indicar si el índice está en orden ascendente o descendente.

Los índices también pueden ser únicos, como la restricción UNIQUE, porque el índice evita registros duplicados en una columna o combinación de columnas que tienen el índice.

Comando CREAR ÍNDICE

Sintaxis básica CREAR ÍNDICE como sigue –

CREATE INDEX index_name ON table_name;

Tipos de índice

PostgreSQL proporciona varios tipos de índices: árbol B, Hash, GiST, SP-GiST y GIN. Cada tipo de índice utiliza un algoritmo diferente, que es más adecuado para diferentes tipos de consultas. De forma predeterminada, el comando CREATE INDEX crea índices de árbol B que son apropiados para las situaciones más comunes.

Índices de una sola columna

Un índice de una sola columna es un índice que se crea en función de una sola columna de una tabla. La sintaxis básica es la siguiente:

CREATE INDEX index_name
ON table_name (column_name);

Índices de varias columnas

Un índice de varias columnas se define en más de una columna de una tabla. La sintaxis básica es la siguiente:

CREATE INDEX index_name
ON table_name (column1_name, column2_name);

Independientemente de si está creando un índice de una sola columna o un índice de varias columnas, considere las columnas que puede usar con mucha frecuencia como criterios de filtro en la cláusula WHERE de una consulta.

Si está utilizando solo una columna, debe elegir un índice de una sola columna. Si dos o más columnas se utilizan con frecuencia como filtros en la cláusula WHERE, la mejor opción es un índice de varias columnas.

Índices únicos

Los índices únicos se utilizan no solo para mejorar el rendimiento, sino también para la integridad de los datos. El índice único evita que se inserten valores duplicados en la tabla. La sintaxis básica es la siguiente:

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Índices parciales

Un índice parcial es un índice construido sobre un subconjunto de una tabla; el subconjunto se define mediante una expresión condicional (denominada predicado de índice parcial). El índice contiene registros solo para aquellas filas de la tabla que satisfacen el predicado. La sintaxis básica es la siguiente:

CREATE INDEX index_name
on table_name (conditional_expression);

Índices implícitos

Los índices implícitos son índices que el servidor de bases de datos crea automáticamente cuando se crea un objeto. Los índices se generan automáticamente para restricciones de clave primaria y restricciones únicas.

Ejemplo

A continuación se muestra un ejemplo en el que crearemos un índice en la tabla EMPRESA para la columna de nómina.

# CREATE INDEX salary_index ON COMPANY (salary);

Ahora enumeremos todos los índices disponibles en la tabla EMPRESA usando d empresa equipo.

# d company

Esto dará la siguiente salida donde company_pkey es un índice implícito creado cuando se creó la tabla.

       Table "public.company"
 Column  |     Type      | Modifiers
---------+---------------+-----------
 id      | integer       | not null
 name    | text          | not null
 age     | integer       | not null
 address | character(50) |
 salary  | real          |
Indexes:
    "company_pkey" PRIMARY KEY, btree (id)
    "salary_index" btree (salary)

Puede enumerar toda su base de datos de índice usando di equipo –

Comando DROP INDEX

El índice se puede eliminar usando PostgreSQL SOLTAR equipo. Se debe tener precaución al eliminar un índice, ya que el rendimiento puede disminuir o aumentar.

La sintaxis básica es la siguiente:

DROP INDEX index_name;

Puede utilizar la siguiente declaración para eliminar un índice creado anteriormente:

# DROP INDEX salary_index;

¿Cuándo debería evitar los índices?

Si bien los índices están diseñados para mejorar el rendimiento de la base de datos, hay ocasiones en las que deben evitarse. Las siguientes pautas indican cuándo revisar el uso del índice:

  • Los índices no deben usarse para tablas pequeñas.

  • Tablas que están sujetas a actualizaciones o inserciones por lotes grandes y frecuentes.

  • Los índices no deben usarse en columnas que contengan una gran cantidad de valores nulos.

  • Las columnas que se manipulan con frecuencia no deben indexarse.

🚫