A mio avviso, essendo MySQL un gestore di dati e' molto piu' pratico per lui eseguire tre queri che per PHP dover scorrere avanti ed indietro un array per filtrare dei dati. Quindi direi sicuramente fai le 3 query.

Tra l'altro se ricordo bene il comportamento del SQL, nella query che preleva gli anni dovrebbe bastarti lo SELECT DISTINCT YEAR (data) senza utilizzare anche GROUP BY YEAR (data), perche' lui ti restituisce soltanto un i valori distinti di YEAR(data), pero' devi provare con qualche dato per esserne sicuro