Proyecto: acelera el buscador
SQL · Unidad 15: Índices y rendimiento
- Plan completo
- SQL
- Proyecto
- 5 ejercicios
«¿Qué pedí esta semana?» En el mostrador, el buscador de pedidos tiene un botón para eso: los pedidos de un cliente desde hace 7 días, que hoy es del 8 al 15 de enero. La unidad pasada contaba la última semana del 9 al 15, y este botón cuenta también el día 8. Quien lo escribió venía de aprender DATE y le sumó 7 días a cada fecha para compararla con hoy. Ana, la clienta 1, tiene tres pedidos, y de esta semana es uno, el del día 12.
La consulta devuelve lo que debe. El plan dice SCAN pedidos, y ese botón se toca todo el día. El trabajo es llevarla de SCAN a SEARCH sin que cambie una sola fila de lo que devuelve.
EXPLAIN QUERY PLAN
SELECT id, producto_id, fecha
FROM pedidos
WHERE cliente_id = 1
AND DATE(fecha, '+7 days')
>= '2026-01-15';Devuelve
| detail |
|---|
| SCAN pedidos |
El resto de la explicación está en la lección, que es del plan completo.
Ejercicios de esta lección
Se hacen en la app, que los corrige al momento y explica por qué.
1. Predice la salida
Para dejar la columna sin envolver, la cuenta pasa al otro lado. En vez de sumarle 7 días a cada
fecha, se le restan a hoy, una sola vez. ¿Qué fecha sale?2. Escribe el código
Reescribe el botón «esta semana» para Ana, la clienta 1:
id,producto_idyfecha, en ese orden, de sus pedidos desde hoy menos 7 días. Hoy es 15 de enero (vale escribirlo a mano o conDATE('now')) y el día 8 cuenta. Deja la columnafechasola a un lado de la comparación, como ya empieza el código. Este ejercicio se califica por las filas. Al plan le toca dos ejercicios más adelante.3. Escribe el código
Falta el índice. Debajo está la consulta ya reescrita, con su
EXPLAIN QUERY PLAN: si ejecutas sin escribir nada, el plan sigue diciendoSCAN pedidos. La búsqueda entra por un cliente, con=, y dentro de él acota porfecha. Crea sobrepedidos, en el sitio del comentario, antes delEXPLAIN QUERY PLAN, un índice de dos columnas que sirva a las dos condiciones, con las columnas en el orden que eso pide. Llámalo como quieras. En esta app el índice se va al terminar la ejecución.4. Escribe el código
¿Bastaba con el índice? Debajo está el botón «esta semana» tal como estaba al principio, con el índice ya creado. Ejecuta: el paréntesis del plan dice
(cliente_id=?), y la segunda columna del índice no trabaja. Cambia solo la condición sobrefechapor la que escribiste antes, con>=, hasta que el paréntesis diga(cliente_id=? AND fecha>?). Este ejercicio se califica por el plan que sale, no por las filas.5. Opción múltiple
Mañana te dan acceso a una base que no hiciste tú, con tablas de millones de filas, y alguien dice que un reporte «va lento». ¿Por dónde empiezas?
Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.