原帖由 mihawk 于 2008-4-14 15:08 发表
楼主看看这两个语句的逻辑读.
select /*+full(a)*/
count(*)
from tb_user a
/
Select ID
From tb_role f
where e.role_id = f.id
Connect By Prior Id = parent_id
Start With Id = 1
/
Select ID
From tb_role f
where e.role_id = f.id
Connect By Prior Id = parent_id
Start With Id = 1
/
这个sql有问题
或者你想要的是
select id, role_id, login
from tb_user e
where Exists (Select ID
From tb_role f
where e.role_id = f.id
Connect By Prior Id = parent_id
Start With Id = 1)的
的逻辑读
select /*+ordered use_hash(e x)*/
e.id, e.role_id, e.login
from tb_user e ,
(Select /*+full(f)*/distinct ID
From tb_role f
Connect By Prior Id = parent_id
Start With Id = 1) x
where e.role_id = x.id
/