使用“CONNECT BY PRIOR”在SQL上遇到性能问题。 在表temp_hierarchy中有大约480条记录,使用先前连接的SQL非常慢,大约需要8到10分钟。
我认为数据具有长周期记录,例如1-> 2,2-> 3和3-> 1,这导致速度变慢。
这是我正在使用的查询。
select distinct t.id, t.parent_id, t.child_id,
leveling, level as check_level
from temp_hierarchy t
start with t.parent_id = 0
connect by nocycle PRIOR t.child_id = t.parent_id;
表格结构如下:
desc temp_hierarchy
Name Null Type ----- ------------ ID NUMBER(19) PARENT_ID NUMBER(19) CHILD_ID NUMBER(19) LEVELING NUMBER(19)
索引是在列parent_id和child_id上定义的。
任何改善查询性能的建议都会有很大帮助。或者如何找到长循环记录?伪列CONNECT_BY_ISCYCLE返回全0。