En retard au magasin 7

Échauffement · indexing, sorting, limit

Étant données 2 tables, customers(id, name, country) et

rentals(id, store_id, customer_id, inventory_id, status, rental_date, amount) de 3 millions de lignes,

listez les 10 locations les plus récentes du magasin 7 dont le status est 'late', rental_date le plus

récent en premier. Si deux partagent le même rental_date, l'id le plus élevé passe en premier.

Renvoyez les colonnes (id, rental_date).

Colonnes attendues

id, rental_date

Indices

Indice 1 : un index, deux rôles

SHOW INDEX FROM rentals : idx_store_status_date est (store_id, status, rental_date). Avec store_id et status fixés par égalité, ses entrées sont déjà triées par rental_date : le même index peut trouver les lignes et les renvoyer dans l'ordre.

Indice 2 : le même sens

Un index se lit vers l'avant ou à rebours, mais pas les deux à la fois. Tout index secondaire se termine aussi par la clé primaire, donc rental_date DESC, id DESC est un seul parcours à rebours. Mélanger DESC et ASC oblige MySQL à rassembler toutes les lignes correspondantes et à les trier.