小白開發,今天在開發程序中遇到這樣一個問題,對業務表進行查詢,但需要到配置表中查詢到匹配的資料,由于配置表需要進行遞回。所以這樣寫了查詢陳述句:
select * from persion a where exists
(select 1 from
pe_zhi_db
where a.user name= code
start with id = ‘00000000’
connect by prior id = parent_id)
persion表一萬條資料,pe_zhi_db表四十萬條資料, 該條陳述句查詢了兩三分鐘。
感覺很慢,就將陳述句改成了:
select * from persion a
where exists ( select 1 from (select code from pe_zhi_db start with id = ‘00000000’ connect by prior id = parent_id) where a.username = code)
結果瞬間查詢出結果。
百度了一下oracle的遞回,遞回完成后才會執行where。
兩種陳述句就是寫法不同,但效率卻差了好多,實在搞不清為什么,求大神指點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/261119.html
標籤:開發
上一篇:求助!oracle rac+dg,備庫應用歸檔有延時
下一篇:access交叉表查詢求助
