Usando la consulta de MySQL para atravesar filas para hacer un árbol recursivo

Tengo una tabla de lista de materiales que se configura así:
artículo - padre

El resultado final cuando muestro la lista de materiales es que se muestra así:

item 1  - parent 0    
    item 2 - parent 1    
    item 3 - parent 1    

El resultado final también podría ser multi nivel como este:

item 3 - parent 0    
    item 4 - parent 3    
    item 76 - parent 3    

Y puede ir hasta el infinito:

item 76 - parent 0    
    item 46 - parent 76    

item 46 - parent 0     
    item 25 - parent 46

Ahora mismo, o bien obtengo 1 nivel de la base de datos:

SELECT * FROM bom WHERE parentId = $itemId (shorthand)

O saque cada fila de la tabla y use mi función recursiva para ordenar solo las que necesito, pero esto es obviamente ineficiente ya que es posible que solo necesite 10 filas, pero extraigo 10,000 registros. La salida de la función recursiva solo creará un árbol como este:

item 1
   item 2
   item 3
      item 4
      item 76
         item 46
            item 25

Todo lo que sé es que estoy empezando en el artículo 1. El artículo 5 podría tener un padre de 11; No tienen que ser secuenciales. Quiero conseguir todas las ramas del niño en el árbol. ¿Cómo podría hacer esta consulta en mysql?

Respuestas a la pregunta(4)

Su respuesta a la pregunta