PostgreSQL
20 min de lecturaÍndices
Optimización de consultas con índices
Los índices mejoran la velocidad de las consultas al permitir búsquedas más rápidas.
Tipos de índices
#
B-tree (por defecto)
sql
1CREATE INDEX idx_usuarios_email ON usuarios(email);#
Hash
sql
1CREATE INDEX idx_usuarios_id_hash ON usuarios USING HASH (id);#
GiST
sql
1CREATE INDEX idx_datos_geo ON ubicaciones USING GIST (coordenadas);#
GIN (para JSONB y arrays)
sql
1CREATE INDEX idx_datos_json ON usuarios USING GIN (metadata);Índices compuestos
sql
1CREATE INDEX idx_ordenes_usuario_fecha 2ON ordenes(usuario_id, fecha DESC);Índices parciales
sql
1CREATE INDEX idx_usuarios_activos 2ON usuarios(email) 3WHERE activo = true;Analizar uso de índices
sql
1-- Ver índices de una tabla2SELECT * FROM pg_indexes WHERE tablename = 'usuarios';3 4-- Ver uso de índices5SELECT schemaname, tablename, indexname, idx_scan6FROM pg_stat_user_indexes7ORDER BY idx_scan;Sintaxis
Sintaxis
sql
1CREATE [UNIQUE] INDEX nombre_idx ON tabla (columna1, columna2);Ejemplos
Crear índice
Índice en email de usuarios
Ejemplo
sql
1CREATE UNIQUE INDEX idx_usuarios_email ON usuarios(email);2 3-- Verificar plan de consulta4EXPLAIN ANALYZE5SELECT * FROM usuarios WHERE email = 'ana@email.com';Resultado:
CREATE INDEX
QUERY PLAN
-------------------------------------------------------------------
Index Scan using idx_usuarios_email on usuarios (cost=0.15..8.17 rows=1 width=36)
Index Cond: (email = 'ana@email.com'::text)
Planning Time: 0.123 ms
Execution Time: 0.045 ms