Se fai una funzione che ogni volta deve interpellare il database il carico è sempre quello.

A prima vista una cosa corretta da fare sarebbe di separare la tabella delle categorie ed utilizzare una JOIN.