Per il resto ti posso dire che conoscendomi cercherei di abbattere il muro dei 10 secondi

Per quanto riguarda il partizionamento.. come dici tu il database oramai non e' da considerare nel caso in oggetto, pero' detto in parole molto spicciole e' una tecnica di suddivisione dei dati secondo una regola logica.
Anziche' avere un unico tabellone con tutti i dati, definisci una regola che li raggruppa e crei tabelle piu' piccole.
Nel caso di una lista dei comuni italiani un possibile partizionamento potrebbe essere per provincia.. quindi avrai tante tabelle quante sono le province, riempite con i rispettivi comuni.
La puoi gestire applicativamente, oppure lasci che sia mysql a fare tutto in automatico.
Questa tecnica applicata per bene e con le giuste regole di suddivisione rende il database molto piu' rapido.
C'e' da dire che non va bene in tutti i casi.