oracle 使用遞歸的性能提示測(cè)試對(duì)比
更新時(shí)間:2013年02月05日 09:24:49 作者:
先遞歸循環(huán)出某個(gè)文件夾下面的所有的文件夾以及文件在關(guān)聯(lián)文件表查找文件的內(nèi)容這是正確的做法,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)oracle遞歸有所幫助
當(dāng)你用start with connect by nocycle prior
進(jìn)行遞歸查找數(shù)據(jù)的時(shí)候那么下面兩段代碼的性能肯定是有明顯差別的大家用的時(shí)候 請(qǐng)注意了代碼可以不看下面 直接看我的總結(jié)
//查詢某個(gè)文件夾文件夾ID=12里面的層次數(shù)以及 文件的個(gè)數(shù)
A:為文件之間的關(guān)聯(lián)關(guān)系 上下級(jí)關(guān)系
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//層次關(guān)系
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.文件類型=文件夾
錯(cuò)解:
select count(0) cou,max(levels)+1 as levels
select C.a1,C.a2,C.levels...
from
(Select A.a1 ,A.a2,,,
level levels//層次關(guān)系
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
上面代碼的區(qū)別在于
正確的做法是:
先遞歸循環(huán)出某個(gè)文件夾下面的所有的文件夾以及文件在關(guān)聯(lián)文件表查找文件的內(nèi)容
錯(cuò)誤的做法是:
先找到某個(gè)文件夾下面的 文件夾和文件
然后再 遞歸循環(huán)出 他下面的文件夾里面所有的文件夾以及文件
這樣就造成了關(guān)聯(lián)關(guān)聯(lián)后冗余的數(shù)據(jù) 一起進(jìn)行了 循環(huán)遞歸 本來(lái)就和文件沒(méi)有關(guān)系 不應(yīng)該吧文件也放進(jìn)來(lái)遞歸
進(jìn)行遞歸查找數(shù)據(jù)的時(shí)候那么下面兩段代碼的性能肯定是有明顯差別的大家用的時(shí)候 請(qǐng)注意了代碼可以不看下面 直接看我的總結(jié)
//查詢某個(gè)文件夾文件夾ID=12里面的層次數(shù)以及 文件的個(gè)數(shù)
A:為文件之間的關(guān)聯(lián)關(guān)系 上下級(jí)關(guān)系
B:為文件夾里面的文件
正解:
復(fù)制代碼 代碼如下:
select count(0) cou,max(levels)+1 as levels
select C.a1,C.a2,C.levels...
from
(Select A.a1 ,A.a2,,,
level levels//層次關(guān)系
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.文件類型=文件夾
錯(cuò)解:
復(fù)制代碼 代碼如下:
select count(0) cou,max(levels)+1 as levels
select C.a1,C.a2,C.levels...
from
(Select A.a1 ,A.a2,,,
level levels//層次關(guān)系
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
上面代碼的區(qū)別在于
正確的做法是:
先遞歸循環(huán)出某個(gè)文件夾下面的所有的文件夾以及文件在關(guān)聯(lián)文件表查找文件的內(nèi)容
錯(cuò)誤的做法是:
先找到某個(gè)文件夾下面的 文件夾和文件
然后再 遞歸循環(huán)出 他下面的文件夾里面所有的文件夾以及文件
這樣就造成了關(guān)聯(lián)關(guān)聯(lián)后冗余的數(shù)據(jù) 一起進(jìn)行了 循環(huán)遞歸 本來(lái)就和文件沒(méi)有關(guān)系 不應(yīng)該吧文件也放進(jìn)來(lái)遞歸
相關(guān)文章
Oracle刪除數(shù)據(jù)報(bào)ORA 02292錯(cuò)誤的巧妙解決方法
這篇文章主要介紹了Oracle刪除數(shù)據(jù)報(bào)ORA 02292錯(cuò)誤的巧妙解決方法,需要的朋友可以參考下2017-07-07
Navicat設(shè)置Oracle數(shù)據(jù)庫(kù)主鍵自增的方法步驟
今天工作的時(shí)候,用到了oracle數(shù)據(jù)庫(kù)建表,發(fā)現(xiàn)navicat中對(duì)于oracle的支持沒(méi)有那個(gè)主鍵自增的按鈕,下面這篇文章主要給大家介紹了關(guān)于Navicat設(shè)置Oracle數(shù)據(jù)庫(kù)主鍵自增的方法步驟,需要的朋友可以參考下2023-03-03
自動(dòng)備份Oracle數(shù)據(jù)庫(kù)
自動(dòng)備份Oracle數(shù)據(jù)庫(kù)...2007-03-03
Oracle修改默認(rèn)的時(shí)間格式的四種方式
這篇文章主要介紹了Oracle修改默認(rèn)的時(shí)間格式的四種方式,默認(rèn)的日期和時(shí)間格式由參數(shù)NLS_DATE_FORMAT控制,如果需要修改默認(rèn)的時(shí)間格式,可以通過(guò)修改會(huì)話級(jí)別或系統(tǒng)級(jí)別的參數(shù)來(lái)實(shí)現(xiàn),需要的朋友可以參考下2024-06-06
oracle數(shù)據(jù)庫(kù)sql的優(yōu)化總結(jié)
自己對(duì)oracle sql的一些優(yōu)化總結(jié),特分享下,方便需要的朋友2013-08-08
Oracle 數(shù)據(jù)庫(kù)自動(dòng)存儲(chǔ)管理-安裝配置
關(guān)于ASM的討論很多,但是到底什么是ASM?ASM是一個(gè)有效的抽象層,使你的Oracle數(shù)據(jù)庫(kù)可以與叫做diskgroups的抽象空間一起使用,而不是直接使用datafiles。2009-05-05
Oracle批量執(zhí)行sql語(yǔ)句之禁用所有表的外鍵
這篇文章主要介紹了Oracle批量執(zhí)行sql語(yǔ)句之禁用所有表的外鍵的相關(guān)資料,需要的朋友可以參考下2016-01-01
45個(gè)非常有用的 Oracle 查詢語(yǔ)句小結(jié)
這里我們介紹的是 40+ 個(gè)非常有用的 Oracle 查詢語(yǔ)句,主要涵蓋了日期操作,獲取服務(wù)器信息,獲取執(zhí)行狀態(tài),計(jì)算數(shù)據(jù)庫(kù)大小等等方面的查詢。這些是所有 Oracle 開(kāi)發(fā)者都必備的技能,所以快快收藏吧2014-04-04
Oracle獲取執(zhí)行計(jì)劃的六種方法總結(jié)
執(zhí)行計(jì)劃(explain plan)是指一條查詢語(yǔ)句在數(shù)據(jù)庫(kù)中的執(zhí)行過(guò)程或訪問(wèn)路徑的描述,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Oracle獲取執(zhí)行計(jì)劃的六種方法,需要的朋友可以參考下2024-01-01

