这两天项目上线前,又过了一遍代码,感觉有条SQL逻辑有问题,就拿出来分析了下,果然有问题,然后用到了递归查询,就记录下。
基本结构
select * from table_name
start with id = ''
connect by prior id = preid
本条数据的id是下一条数据的preid,向下遍历
其中,id可以用关键字in。
prior关键字在 = 前面和后面的结果不同。
select j.userid, j.username, j.usercode
from XT_USER j, XT_USERROLE U
where J.USERID = U.USERID
AND U.ROLEID IN ('D5FCE584', 'DBC71B7B')
and j.deptid in
(select distinct o.organiseid
from xt_organise o
start with o.organiseid in
(select distinct z.zzid
from zldt_jf z
where FLOOR(TO_DATE(Z.JZ_DAY, 'YYYY-MM-DD') - SYSDATE) = 7)
connect by prior o.organiseid = o.preorganiseid)
在项目上线前的代码审查中发现SQL逻辑问题,通过使用递归查询进行优化,解决了数据遍历效率低下的问题。本文详细介绍了递归查询的使用场景及实现方式,包括如何利用prior关键字和in子句来提高查询性能。

9117

被折叠的 条评论
为什么被折叠?



