Alcançar a hierarquia, o relacionamento pai / filho de maneira eficaz e fácil

Eu tenho uma mesa como

create table site
(
site_Id int(5),
parent_Id int(5),
site_desc varchar2(100)
);

Significado dos campos:

site_Id: ID dos sitesparent_Id: ID pai do sitesite_desc: embora não seja relevante para a pergunta, mas tem a descrição do site

O requisito é que, se eu tiver um site_id como entrada, preciso de todos os IDs marcados abaixo do site. Por exemplo:

                    A
                   / \
                  B   C
                / | \ /\
               D  E F G H
              /\
             I  J

Todos os nós são o site_Id.

A tabela contém dados como este:

Site_id  | Parent_ID  |  site_desc
_________|____________|___________
 A       |   -1       |   
 B       |    A       |
 C       |    A       |
 D       |    B       |
 E       |    B       |
 F       |    B       |
 I       |    D       |
 J       |    D       |

......

A é o pai de B e C e assim por diante.

Se B é a entrada dada então a consulta precisa buscar D, E, I, F, J

Atualmente é alcançado através de várias consultas em um loop, mas eu estava pensando em conseguir isso em um número mínimo de consultas.

O que estou fazendo atualmente é ::

baixo voto

O algoritmo é assim:

Initially create a data set object which you will populate, by fetching data from the data base. 
Create a method which takes the parent id as parameter and returns its child nodes if present, and returns -1, if it doesnt have a child. 
Step1: Fetch all the rows, which doesn't have a parent(root) node. 
Step2: Iterate through this result. For example if prod1 and prod2 are the initial returned nodes, in the resultset. 
Iterating this RS we get prod1, and we insert a row in our DataSET obj. 
Then we send the id of prod1 to getCHILD method, to get its child, and then again we iterate the returned resultset, and again call the getCHILD method, till we dont get the lowest node.

Eu preciso da melhor técnica otimizada dentro da minha restrição de modelo de dados. Sinta-se à vontade para responder se tiver alguma sugestão.
Por favor, sugira qualquer coisa. Desde já, obrigado.

questionAnswers(10)

yourAnswerToTheQuestion