小白开发,今天在开发过程中遇到这样一个问题,对业务表进行查询,但需要到配置表中查询到匹配的数据,由于配置表需要进行递归。所以这样写了查询语句:
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。
两种语句就是写法不同,但效率却差了好多,实在搞不清为什么,求大神指点。
Oracle递归查询效率问题
最新推荐文章于 2024-08-29 11:44:39 发布
博主在开发中遇到Oracle数据库查询效率问题,原始查询使用了EXISTS子句配合递归,导致查询耗时较长。通过调整查询语句的结构,将递归查询放在内层,查询速度显著提升。文章探讨了Oracle中的递归查询执行机制,以及如何通过优化查询结构来改善性能。
摘要由CSDN通过智能技术生成