Non direi. Non e' molto elegante, ma di solito questo non e' sinonimo di pesantezza (anzi, e' piu' vero il contrario)
La souzione elegante e' questa:
crei un array con tutte le lettere
array("a", "b" ...)
cicli l'array
e per ogni iterazione fai la query sul DB ricercando quelle che hanno come prima lettera quella lettera specifica
stampi la lista.
Magari ti fai una funzione tipo:
getPaeseStartingBy($firstLetter)
che ti restituisce gia' gli elemeti.
Cio' e' sicuramente piu' pesante, ma molto piu' leggibile