Índices, transacciones y optimización pro

Optimiza consultas con índices correctos y asegura integridad con transacciones, locks y aislamiento en MySQL.

Aquí pasas de escribir consultas correctas a escribir consultas eficientes y confiables bajo carga.

Verás cuándo crear índices, cómo leer EXPLAIN y cómo usar transacciones para evitar inconsistencias de datos.

Si vienes de SQL básico, repasa <a href="/curso/bbdd/leccion/bbdd-sql-joins-agrupaciones-medio">joins y agrupaciones</a> antes de esta parte pro.

  • Un índice acelera lecturas, pero también afecta escrituras.
  • No indexes todo por defecto. Indexa columnas usadas en filtros, joins y ordenaciones frecuentes; valida con EXPLAIN.
  • Índices compuestos deben respetar orden de consulta para aprovecharse correctamente.
  • Todo o nada en operaciones críticas.
  • Para transferencias o flujos de inventario, agrupa cambios en transacción. Si falla una parte, haces ROLLBACK y preservas consistencia.

Índices: acelerador con coste

Un índice acelera lecturas, pero también afecta escrituras.

No indexes todo por defecto. Indexa columnas usadas en filtros, joins y ordenaciones frecuentes; valida con EXPLAIN.

Índices compuestos deben respetar orden de consulta para aprovecharse correctamente.

Transacciones y consistencia

Todo o nada en operaciones críticas.

Para transferencias o flujos de inventario, agrupa cambios en transacción. Si falla una parte, haces ROLLBACK y preservas consistencia.

Concurrencia sin control produce carreras y datos corruptos; diseña con aislamiento apropiado.

Bases de datos
24

Índices, transacciones y optimización pro

Optimiza consultas con índices correctos y asegura integridad con transacciones, locks y aislamiento en MySQL.

Código del tema: CREATE INDEX idx_users_email ON users(email);

📘 Teoría

Índices: acelerador con coste

Un índice acelera lecturas, pero también afecta escrituras.

1

No indexes todo por defecto. Indexa columnas usadas en filtros, joins y ordenaciones frecuentes; valida con EXPLAIN.

2

Índices compuestos deben respetar orden de consulta para aprovecharse correctamente.

EXPLAIN + índice
EXPLAIN SELECT * FROM pedidos WHERE cliente_id = 42;
CREATE INDEX idx_pedidos_cliente ON pedidos(cliente_id);

Transacciones y consistencia

Todo o nada en operaciones críticas.

1

Para transferencias o flujos de inventario, agrupa cambios en transacción. Si falla una parte, haces ROLLBACK y preservas consistencia.

2

Concurrencia sin control produce carreras y datos corruptos; diseña con aislamiento apropiado.

Bloque transaccional
START TRANSACTION;
UPDATE cuentas SET saldo = saldo - 100 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 100 WHERE id = 2;
COMMIT;

🧪 Aprende probando

Ejemplo Ejemplo guiado: leer plan de ejecución Usa EXPLAIN antes de optimizar a ciegas.
Ejemplo Ejemplo guiado: crear índice útil Indexa columna de filtro frecuente.
Ejemplo Demo: operación atómica Transferencia con transacción.

🏁 Retos

Reto Reto: índice compuesto Optimiza búsqueda por cliente y fecha.
Reto Reto: añade rollback de seguridad Incluye ROLLBACK en flujo transaccional de prueba.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Bases de datos.

Test de Bases de datos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .