当前位置: 移动技术网 > IT编程>数据库>Oracle > oracle 使用递归的性能提示测试对比

oracle 使用递归的性能提示测试对比

2017年12月12日  | 移动技术网IT编程  | 我要评论

我想和你唱任贤齐天涯,平顶山房地产网,传感器类型

当你用start with connect by nocycle prior
进行递归查找数据的时候那么下面两段代码的性能肯定是有明显差别的大家用的时候 请注意了代码可以不看下面 直接看我的总结
//查询某个文件夹文件夹id=12里面的层次数以及 文件的个数
a:为文件之间的关联关系 上下级关系
b:为文件夹里面的文件
正解:
复制代码 代码如下:

select count(0) cou,max(levels)+1 as levels
select c.a1,c.a2,c.levels...
from
(select a.a1 ,a.a2,,,
level levels//层次关系
from a
where a.a1=,,,
and a.a2=....
start with a.a1 = 12
connect by nocylce prior a.id=a.parentid
) c left join b
on c.文件id=b.文件id
and c.文件类型=文件夹

错解:
复制代码 代码如下:

select count(0) cou,max(levels)+1 as levels
select c.a1,c.a2,c.levels...
from
(select a.a1 ,a.a2,,,
level levels//层次关系
from a
left join b
on c.文件id=b.文件id
where c.文件类型=文件夹
and a.a1=,,,
and a.a2=....
start with a.a1 = 12
connect by nocylce prior a.id=a.parentid
) c

上面代码的区别在于
正确的做法是
先递归循环出某个文件夹下面的所有的文件夹以及文件在关联文件表查找文件的内容
错误的做法是
先找到某个文件夹下面的 文件夹和文件
然后再 递归循环出 他下面的文件夹里面所有的文件夹以及文件
这样就造成了关联关联后冗余的数据 一起进行了 循环递归 本来就和文件没有关系 不应该吧文件也放进来递归

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网