Saltar al contenido

Índices y uniones

SQL · Unidad 15: Índices y rendimiento

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. 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 clientes a buscar a alguien por su clave?

  2. 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. 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. 4. Predice la salida

    El índice de la clave de notas va por (estudiante_id, curso_id). Esta consulta nombra las dos columnas en el otro orden. ¿Qué plan sale?

  5. 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 dice SCAN notas. ¿Qué línea tiene el problema?

  6. 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. 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 por SCAN n, recorriendo notas entera. Crea sobre notas, en el sitio del comentario, antes del EXPLAIN QUERY PLAN, el índice que deja a la base ir de un curso a sus notas, y el plan tiene que empezar por SCAN c. Llámalo como quieras. En esta app el índice se va al terminar la ejecución.

  8. 8. Completa el código

    notas acabó 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.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →