Comptez ces bugs

Boss · indexing, primary-key, binary-search

Étant donnée une table bugs(id, token, title, category, device, reported_at, created_at, updated_at)

d'environ 10 millions de lignes, trouvez combien de bugs ont été créés le 2019-03-01 ou après.

Renvoyez la colonne (count).

Colonnes attendues

count

Indices

Indice 1 : ce qui est indexé

Exécutez SHOW INDEX FROM bugs et vérifiez si created_at apparaît dans un index. Puis faites un EXPLAIN de votre requête WHERE created_at : key = NULL avec rows proche de 10M signifie un parcours complet. Quel index pourrait restreindre une plage ici ?

Indice 2 : regardez les lignes

Regardez les premières lignes : created_at augmente avec id. Les lignes sont insérées dans l'ordre, donc « créé le 2019-03-01 ou après » revient à « id à partir d'un certain id frontière ».

Indice 3 : trouvez la frontière

Faites une recherche dichotomique avec Run : SELECT created_at FROM bugs WHERE id >= <mid> LIMIT 1 n'est qu'une descente dans la clé primaire. Coupez la plage d'ids en deux jusqu'à trouver le premier id créé le 2019-03-01, puis COUNT(*) WHERE id >= cet id.