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.