oracle使用遞迴的效能提示

2021-12-29 20:54:58 字數 1251 閱讀 1094

oracle使用遞迴的效能提示

當你用start with  connect by nocycle prior

進行遞迴查詢資料的時候

www.2cto.com  

那麼下面兩段**的效能肯定是有明顯差別的 大家用的時候 請注意了 **可以不看下面 直接看我的總結

//查詢某個資料夾資料夾id=12裡面的層次數以及 檔案的個數

a:為檔案之間的關聯關係 上下級關係

b:為資料夾裡面的檔案

正解:  www.2cto.com  

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上面**的區別在於

www.2cto.com  

正確的做法是:

先遞迴迴圈出某個資料夾下面的 所有的資料夾以及檔案

在關聯檔案表 查詢檔案的內容 

錯誤的做法是:

先找到某個資料夾下面的 資料夾和檔案

然後再 遞迴迴圈出 他下面的資料夾裡面所有的資料夾以及檔案

這樣就造成了關聯關聯後冗餘的資料 一起進行了 迴圈遞迴 本來就和檔案沒有關係 不應該吧檔案也放進來遞迴

oracle 遞迴的使用

oracle資料庫提供給了乙個強大的功能 遞迴。這功能目前在db2中是沒有的。1.語法 select from table name t start with t.child id connect by prior t.child id t.parent id 注意 不能寫成 connect by ...

ORACLE中使用遞迴查詢

在資料庫查詢中常常會碰到要查詢樹形結構的資料,需要用乙個欄位的資料當做下一條記錄的父節點繼續查詢,如果在不知道有多少級節點的情況下一次次手寫sql查詢會很繁瑣而沒有效率,這時可以使用 oracle中的connect with prior遞迴演算法 oracle中start with.connect ...

oracle中使用SQL遞迴語句

場景 常見的領導關係樹結構,知道某一節點id,要查出此節點的所有下級 直接下級和間接下級 此時需要使用sql遞迴語句。oracle中的遞迴語句 start with connect byprior 例子 pid id a b a c a e b b1 b b2 c c1 e e1 e e3 d d1...