oracle 使用遞歸的性能提示測試對比

先遞歸循環出某個文件夾下面的所有的文件夾以及文件在關聯文件表查找文件的內容這是正確的做法,感興趣的朋友可以了解下,或許對你學習oracle遞歸有所幫助

當你用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

上面代碼的區別在于
正確的做法是
先遞歸循環出某個文件夾下面的所有的文件夾以及文件在關聯文件表查找文件的內容
錯誤的做法是
先找到某個文件夾下面的 文件夾和文件
然后再 遞歸循環出 他下面的文件夾里面所有的文件夾以及文件
這樣就造成了關聯關聯后冗余的數據 一起進行了 循環遞歸 本來就和文件沒有關系 不應該吧文件也放進來遞歸

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享