Contenido del curso
Bases de Datos: De Cero a Experto

🎯 Objetivo:

Entender qué son los planes de ejecución, cómo leerlos y cómo optimizar consultas para mejorar el rendimiento en bases de datos.


🔍 ¿Qué es un plan de ejecución?

  • Es la ruta o estrategia que el motor de base de datos usa para ejecutar una consulta SQL.

  • Muestra el orden y método en que se leen tablas, aplican filtros, unen datos, etc.


⚙️ ¿Por qué es importante?

  • Permite detectar consultas lentas.

  • Ayuda a entender qué índices se están usando o si se está haciendo un escaneo completo (table scan).

  • Permite ajustar consultas para que el motor las ejecute más rápido.


🧩 Componentes comunes en un plan de ejecución

Componente Descripción
Seq Scan (Table Scan) Lee toda la tabla fila por fila (lento).
Index Scan Usa índice para buscar filas específicas (rápido).
Join Types INNER JOIN, HASH JOIN, MERGE JOIN, etc.
Filter Condición aplicada para filtrar filas.
Cost Estimación de recursos para la operación.

🔧 Cómo ver un plan de ejecución (ejemplo en PostgreSQL)

Ejecuta:

sql
EXPLAIN ANALYZE
SELECT * FROM usuarios WHERE nombre = 'Cristian';

Salida típica:

pgsql
Index Scan using idx_nombre on usuarios (cost=0.29..8.52 rows=1 width=123) (actual time=0.012..0.014 rows=1 loops=1)
Filter: (nombre = 'Cristian')

Esto indica que usa el índice idx_nombre y es rápido.


🚀 Consejos para optimizar consultas

  • Usa índices en columnas filtradas o unidas frecuentemente.

  • Evita usar SELECT *; selecciona solo columnas necesarias.

  • Revisa joins: asegúrate que tengan índices adecuados.

  • Reduce subconsultas complejas o reemplázalas por joins.

  • Usa agregaciones con índices si es posible.


📝 Actividad práctica

  1. Crea una consulta lenta (ejemplo: sin índices).

  2. Usa EXPLAIN ANALYZE para ver el plan.

  3. Crea un índice y vuelve a ejecutar la consulta y plan para comparar.

  4. Describe qué cambio observaste en el plan y en el tiempo de ejecución.


✅ Revisión rápida

  • ¿Qué indica un Seq Scan en un plan de ejecución?

  • ¿Por qué es mejor un Index Scan?

  • ¿Qué comando permite ver el plan de ejecución en PostgreSQL?

Scroll al inicio