PostgreSQL – CREAR ÍNDICE

Para comprender mejor el concepto detrás de los índices en PostgreSQL, suponga que necesita buscar el número de teléfono de Raju Kumar en una guía telefónica. Con el entendimiento de que los nombres en la guía telefónica están en orden alfabético, primero busca la página donde el apellido es Kumar, luego busca el nombre Raju y finalmente obtiene su número de teléfono.

Supongamos que los nombres en la guía telefónica no estuvieran ordenados alfabéticamente, tendría que revisar todas las páginas, revisar cada nombre hasta encontrar el número de teléfono de Raju Kumar. Esto se denomina exploración secuencial en la que revisa todas las entradas hasta que encuentra la que está buscando.

Similar a una agenda telefónica, los datos almacenados en la tabla deben organizarse en un orden particular para acelerar varias búsquedas. Es por eso que los índices entran en juego.

CREAR ÍNDICE

Syntax:
CREATE INDEX index_name ON table_name [USING method]
(
    column_name [ASC | DESC] [NULLS {FIRST | LAST }],
    ...
);

Analicemos la sintaxis anterior:

  • CREAR ÍNDICE
  • un árbol binariohashgistspgistginbrina árbol binario
  • ASCDESC
  • NULLS FIRSTTNULLS LASTnon-nullNULLS FIRSTDESCNULLS LASTDESC

, dirección de la base de datos de muestra

Ejemplo:

223664661973

SELECT * FROM address
WHERE phone = '223664661973';

Es obvio que el motor de la base de datos tuvo que escanear toda la tabla de direcciones para buscar la dirección porque no hay un índice disponible para la columna de teléfono.

Para mostrar el plan de consulta, utilice la declaración EXPLAIN de la siguiente manera:

EXPLAIN SELECT *
FROM address
WHERE phone = '223664661973';

Esto dará como resultado lo siguiente:

direccion telefonica

CREATE INDEX idx_address_phone 
ON address(phone);
EXPLAIN SELECT *
FROM address
WHERE phone = '223664661973';

Producción:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *