Puedes ejecutar cualquier consulta de desnormalización en nuestra consola interactiva: Abrir consola SQL →
Desnormalización en SQL: rendimiento a cambio de redundancia controlada
La desnormalización consiste en duplicar datos estratégicamente para mejorar el rendimiento en consultas. Se usa en sistemas de alta carga, analítica, dashboards y bases orientadas a lectura.
Tabla de contenidos
1. ¿Qué es la desnormalización?
Es el proceso de duplicar datos para evitar JOINs costosos y acelerar consultas de lectura.
-- Normalizado
ventas(id, cliente_id)
clientes(id, nombre)
-- Desnormalizado
ventas(id, cliente_id, cliente_nombre)
2. Cuándo usarla
- Dashboards con miles de lecturas por segundo.
- Reportes que requieren JOINs complejos.
- Sistemas OLAP.
- Tablas de resumen (materialized views).
- Consultas que no requieren datos 100% frescos.
3. Técnicas de desnormalización
- Duplicación de columnas
- Tablas de resumen
- Materialized views
- Pre‑cálculo de métricas
- Denormalización parcial
CREATE MATERIALIZED VIEW ventas_resumen AS
SELECT cliente_id, COUNT(*) AS total
FROM ventas
GROUP BY cliente_id;
4. Ejemplos prácticos
-- Tabla desnormalizada para reportes
ventas_detalle(
id,
cliente_id,
cliente_nombre,
producto_nombre,
categoria,
fecha
)
-- Pre-cálculo de métricas
estadisticas(
producto_id,
ventas_totales,
promedio_mensual
)
5. Ejercicios para practicar
- Desnormaliza una tabla de ventas.
- Crea una tabla de resumen.
- Genera una materialized view.
- Pre‑calcula métricas de productos.
- Explica cuándo evitar la desnormalización.
ventas_detalle(id, cliente_id, cliente_nombre, producto_nombre)
CREATE TABLE resumen AS SELECT cliente_id, COUNT(*) FROM ventas GROUP BY cliente_id;
CREATE MATERIALIZED VIEW mv AS SELECT * FROM ventas;
-- Evitar cuando los datos cambian constantemente.
6. Mini‑proyecto: Sistema de reportes optimizado
CREATE MATERIALIZED VIEW ventas_por_categoria AS
SELECT categoria, COUNT(*) AS total
FROM ventas
GROUP BY categoria;
7. Errores comunes
- Desnormalizar sin necesidad.
- Duplicar demasiados datos.
- No actualizar tablas desnormalizadas.
- Ignorar inconsistencias.
8. Preguntas frecuentes
¿La desnormalización mejora el rendimiento?
Sí, especialmente en consultas de lectura.
¿Genera inconsistencias?
Puede hacerlo si no se gestiona bien.