Chiaramente, il problema è che la query sta eseguendo una scansione dell'indice. L'approccio alternativo consiste nell'eseguire due ricerche nell'indice, per il primo e l'ultimo valore che sono gli stessi, e quindi utilizzare le metainformazioni nell'indice per il calcolo. Sulla base delle tue osservazioni, MySQL fa entrambe le cose.
Il resto di questa risposta è speculazione.
Il motivo per cui le prestazioni sono "solo" 300 volte più lente, anziché 200.000 volte più lente, è dovuto al sovraccarico nella lettura dell'indice. In realtà, la scansione delle voci è abbastanza veloce rispetto ad altre operazioni necessarie.
C'è una differenza fondamentale tra numeri e stringhe quando si tratta di confronti. Il motore può semplicemente guardare le rappresentazioni in bit di due numeri e riconoscere se sono uguali o diversi. Sfortunatamente, per le stringhe, è necessario tenere conto della codifica/collazione. Penso che sia per questo che deve guardare ai valori.
È possibile che se avessi 216.000 copie di esattamente la stessa stringa, quindi MySQL sarebbe in grado di eseguire il conteggio utilizzando i metadati nell'indice. In altre parole, l'indicizzatore è abbastanza intelligente da utilizzare i metadati per confronti di uguaglianza esatta. Ma non è abbastanza intelligente da tenere conto della codifica.