EXPLAIN muestra un sequential scan en una tabla de 50 millones de filas para WHERE email = ?. ¿Cuál es la solución más probable?
Opciones
- Añadir más RAM
- Añadir un índice en
email(Opción correcta) - Reescribir en NoSQL
- Usar SELECT DISTINCT
Respuesta
Añadir un índice en email
Por qué
EXPLAIN muestra el plan que usará la base de datos para una consulta. Un 'sequential scan' significa que lee todas las filas, aquí 50 millones, para encontrar un email.
Un índice en email le permite saltar directamente a la fila que coincide.
Usa EXPLAIN ANALYZE para ver tiempos reales, y cuidado con funciones como LOWER(email), que necesitan un índice sobre esa expresión.
Recuerda
Seq scan en tabla grande + filtro selectivo → añade un índice.