sql >> Base de Datos >  >> RDS >> PostgreSQL

Optimice las tablas de solo lectura de PostgreSQL

Columnas que se utilizan para filtrar o unirse (o, en menor grado, ordenar ) son de interés para la indexación. ¡Las columnas que solo se seleccionan son apenas relevantes! Para la siguiente consulta, solo los índices en a y e puede ser útil:

SELECT a,b,c,d
FROM   tbl_a
WHERE  a = $some_value
AND    e < $other_value;

Aquí, f y posiblemente c también son candidatos:

SELECT a,b,c,d
FROM   tbl_a
JOIN   tbl_b USING (f)
WHERE  a = $some_value
AND    e < $other_value
ORDER  BY c;

Después de crear índices, pruebe para ver si realmente son útiles con EXPLAIN ANALYZE . Compare también los tiempos de ejecución con y sin los índices. Eliminar y volver a crear índices es rápido y fácil. También hay parámetros para experimentar con EXPLAIN ANALYZE . La diferencia puede ser asombrosa o inexistente.
Como sus tablas son de solo lectura, el mantenimiento del índice es económico. Es simplemente una cuestión de espacio en disco.

Si realmente quiere saber lo que está haciendo, comience leyendo los documentos .

Si no sabe qué consultas esperar...

  1. Intente registrar suficientes consultas para encontrar casos de uso típicos. Registra consultas con el parámetro log_statement = all para eso. O simplemente registre consultas lentas usando log_min_duration_statement .

  2. Crear índices eso podría ser útil y verifique las estadísticas después de un tiempo para ver qué se usa realmente. PostgreSQL tiene una infraestructura completa para supervisión de estadísticas . Una forma conveniente de estudiar estadísticas (y muchas otras tareas) es pgAdmin donde puede elegir su tabla/función/índice y obtener todos los datos en la pestaña "estadísticas" en el navegador de objetos (ventana principal).

  3. Proceda como se describe arriba para ver si los índices en uso realmente aceleran las cosas.

  4. Si el planificador de consultas decide usar uno o más de sus índices, pero no tiene ningún efecto o tiene un efecto adverso, es probable que algo esté mal con su configuración y necesite estudiar los conceptos básicos de la optimización del rendimiento:vacío, análisis, parámetros de costos, uso de memoria, ...