Esta consulta te servirá:
Código:
SELECT id FROM tabla WHERE id_prev IN(SELECT id FROM tabla WHERE id_prev IS NULL)
Es algo más rápida ya que se obtienen los IDs de segundo nivel en una sola consulta en lugar de una por ID pero no sé si ganarás mucha velocidad. Para obtener el tercer nivel sería cosa de anidar otra subconsulta y así sucesivamente. Revisa qué es exactamente lo que necesita tu aplicación y optimiza según eso. Por ejemplo, si solo necesitas que cada usuario pueda ver cuantos referidos tiene en 5 niveles desde el suyo, haz que el número se almacene en otra tabla (campos: id, nivel, cantidad). Esta tabla se actualizaría cada vez que alguien se dé de alta y sería más eficiente. Pero esto es solo un ejemplo. Eso depende de cómo vaya a funcionar tu aplicación y qué necesidades tengas.
Un saludo