Existem várias maneiras diferentes de armazenar dados hierárquicos no MySQL. Confira a apresentação de Bill Karwin que demonstra quatro opções.
- Lista de adjacências
- Enumeração de caminho
- Conjuntos aninhados
- Tabela de fechamento
Você está usando a lista de adjacência modelo para armazenar dados hierárquicos, mas infelizmente este é o mais difícil modelo que você pode escolher para consultar subárvores.
Suas opções são:
- Mude para um modelo diferente.
- Restringir as consultas a n níveis de profundidade.
- Use um procedimento armazenado para consultar recursivamente. Para obter mais informações sobre isso, consulte a série de artigos de Quassnoi - Consultas hierárquicas no MySQL .