Tente usar um modelo de conjunto aninhado. Está descrito em Gerenciando dados hierárquicos no MySQL .
O grande benefício é que você não precisa usar recursão para recuperar nós filhos, e as consultas são bem diretas. A desvantagem é que inserir e excluir dá um pouco mais de trabalho.
Também escala muito bem. Conheço um sistema extremamente grande que armazena hierarquias de discussão usando esse método.