Sql 通过先前查询连接速度较慢

Sql 通过先前查询连接速度较慢,sql,Sql,我在使用“连接方式”的SQL上遇到性能问题。 在表temp_层次结构中有大约480条记录,使用connect by Preor的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 st

我在使用“连接方式”的SQL上遇到性能问题。 在表temp_层次结构中有大约480条记录,使用connect by Preor的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; 
表格结构如下:

描述温度层次结构

Name Null Type ----- ------------ ID NUMBER(19) PARENT_ID NUMBER(19) CHILD_ID NUMBER(19) LEVELING NUMBER(19) 名称空类型 ----- ------------ 身份证号码(19) 家长身份证号码(19) 儿童身份证号码(19) 平层编号(19) 索引是在列parent\u id和child\u id上定义的


任何改进查询性能的建议都会有很大帮助。或者如何找到长周期记录?伪列CONNECT\u BY\u ISCYCLE返回所有0。

我不确定这对您的问题是否重要,但不清楚为什么表中有
id
字段和
child\u id
字段。这两个字段有何不同?id列只是temp_hierarchy表中记录的运行序列。它只是用于识别唯一的记录。