Le premier bug supprimé
Intermédiaire · primary-key, anti-join, limit
Étant donnée une table bugs(id, token, title, category, device, reported_at, created_at, updated_at)
d'environ 10 millions de lignes, certains bugs ont été supprimés et ont laissé des trous dans la
suite des ids. Trouvez le plus petit id supérieur à 5 000 000 qu'aucun bug ne porte. Renvoyez la
colonne (missing_id).
Colonnes attendues
missing_id
Indices
Indice 1 : à quoi ressemble un trou
Un id x manque juste après un bug b quand aucun bug n'a id = b.id + 1. Le vérifier est une seule recherche par clé primaire, par exemple LEFT JOIN bugs n ON n.id = b.id + 1 ... WHERE n.id IS NULL.
Indice 2 : arrêtez-vous au premier
Parcourez les bugs à partir de l'id 5 000 000 dans l'ordre de la clé primaire et arrêtez-vous au premier dont l'id suivant manque : ORDER BY b.id LIMIT 1. MIN() renvoie le même nombre mais doit d'abord examiner tous les candidats.