Retrasos en la tienda 7
Calentamiento · indexing, sorting, limit
Dadas 2 tablas, customers(id, name, country) y
rentals(id, store_id, customer_id, inventory_id, status, rental_date, amount) con 3 millones de filas,
lista los 10 alquileres más recientes de la tienda 7 cuyo status es 'late', con el rental_date más
reciente primero. Si dos comparten rental_date, va primero el de id más alto.
Devuelve las columnas (id, rental_date).
Columnas esperadas
id, rental_date
Pistas
Pista 1: un índice, dos trabajos
SHOW INDEX FROM rentals: idx_store_status_date es (store_id, status, rental_date). Con store_id y status fijados por igualdad, sus entradas ya están ordenadas por rental_date, así que el mismo índice puede encontrar las filas y devolverlas en orden.
Pista 2: el mismo sentido
Un índice se puede leer hacia delante o hacia atrás, pero no las dos cosas a la vez. Todo índice secundario termina además con la clave primaria, así que rental_date DESC, id DESC es un solo recorrido hacia atrás. Mezclar DESC y ASC obliga a MySQL a reunir todas las filas que coinciden y ordenarlas.