Índices y uniones
SQL · Unidad 15: Índices y rendimiento
- Plan completo
- SQL
- 8 ejercicios
En el mostrador nadie se sabe el número de cliente de Luis. Lo buscan por su nombre: ¿qué pedidos tiene Luis? Eso es un JOIN, y su plan tiene dos líneas que se leen de arriba abajo. La de arriba es por dónde empieza la base. La de abajo, lo que hace por cada fila de la de arriba. El plan llama a cada tabla por su alias.
SCAN p: recorre los doce pedidos. SEARCH c USING INTEGER PRIMARY KEY: por cada uno, busca a su cliente por la clave para ver si se llama Luis. Doce búsquedas, y sirven tres.
EXPLAIN QUERY PLAN
SELECT p.id, p.fecha
FROM pedidos p
JOIN clientes c
ON p.cliente_id = c.id
WHERE c.nombre = 'Luis';Devuelve
| detail |
|---|
| SCAN p |
| SEARCH c USING INTEGER PRIMARY KEY (rowid=?) |
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. Opción múltiple
La tienda grande tiene 800 000 pedidos y 50 000 clientes. Con ese mismo plan, ¿cuántas veces va la base a
clientesa buscar a alguien por su clave?2. Completa el código
El almacén busca los pedidos de un producto por su nombre. Completa el índice que deja a la base ir de un producto a sus pedidos.
3. Ordena las líneas
El local de Lima quiere las fechas de los pedidos de sus clientes. Ordena las líneas para crear el índice de la clave foránea y ver el plan de esa consulta. Sobran dos.
4. Predice la salida
El índice de la clave de
notasva por(estudiante_id, curso_id). Esta consulta nombra las dos columnas en el otro orden. ¿Qué plan sale?5. Encuentra el bug
Cada profesor pide la lista de su curso, y alguien crea un índice para eso. El plan de la lista de Matemáticas, el curso 1, debería decir
SEARCH, y diceSCAN notas. ¿Qué línea tiene el problema?6. Completa el código
La libreta de Hugo, el estudiante 3, se imprime de su mejor nota a la peor. El índice de la clave lo encuentra, pero la base todavía tiene que ordenar. Completa un índice con el que el plan quede en una sola línea.
7. Escribe el código
En la escuela buscan la lista de un curso por su nombre. Debajo está esa consulta con su
EXPLAIN QUERY PLAN: si ejecutas sin escribir nada, el plan empieza porSCAN n, recorriendonotasentera. Crea sobrenotas, en el sitio del comentario, antes delEXPLAIN QUERY PLAN, el índice que deja a la base ir de un curso a sus notas, y el plan tiene que empezar porSCAN c. Llámalo como quieras. En esta app el índice se va al terminar la ejecución.8. Completa el código
notasacabó con dos índices hechos a mano, y cada uno se actualiza con cada nota nueva. Uno está de más. Completa para quitarlo: después, la lista de Matemáticas de la mejor nota a la peor tiene que seguir saliendo con un plan de una sola línea.
Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.