带连接的分层查询。性能问题

时间:2016-03-15 13:07:05

标签: sql oracle oracle10g hierarchy hierarchical

我正在尝试形成一个查询,以获取多级主管下的下属的详细信息。层次结构如下: 总经理 - 区域经理 - 区域经理 - 主管 - 员工 我的要求是,此层次结构中的任何经理都应该能够在层次结构的底部看到员工的详细信息。

到目前为止,我尝试了以下选项:

1:102秒执行

WITH w AS 
( select personId from assignments start with supervisorId = :inputId
Connect by prior personId = supervisorId)
Select columns FROM a,b
where a.column = b.column
And a.personId = w.personId;

2:92秒

 Select columns FROM a,b
    where a.column = b.column
    And a.personId IN   ( select personId from assignments start with supervisorId = :inputId
    Connect by prior personId = supervisorId);

3:0.75秒[未提取数据]

WITH w AS ( select columns FROM a,b
        where a.column = b.column)
Select w.columns from w, assignments
Where t.personId = assignments.personId
Start with supervisorId = :inputId
Connect by prior personId = supervisorId.

在选项3中,由于在连接之前首先执行连接条件,这可能是它不返回任何行的原因。请注意,在为单个员工提取数据时,执行时间不到一秒,即删除分层查询部分和分配表,并为personId提供单个人。

所以我正在寻找满足这一要求的有效解决方案。任何方法,甚至不包括分层查询都是受欢迎的。

谢谢,

Anoop

0 个答案:

没有答案