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