我有张表的结构如下,属于树形的结构表 表名为NODE_TREENODE_ID,PARENT_ID数据类型均为number(10),PARENT_ID=0则为跟节点,NODE_ID为主键,唯一索引,parent_ID也是索引字段。
在节点移动XX时,我需要同步更新NODE_PATH字段。就需要更新该节点下所有子节点NODE_PATH,SQL如下:
UPDATE NODE_TREE A SET NODE_PATH=(
    SELECT SYS_CONNECT_BY_PATH(NODE_ID,'/') FROM NODE_TREE B
   WHERE A.NODE_ID=B.NODE_ID
   START WITH B.PARENT_ID=0 CONNECT BY PRIOR B.NODE_ID=B.PARENT_ID
 ) WHERE A.NODE_ID IN (
   SELECT NODE_ID FROM NODE_TREE START WITH NODE_ID=XX CONNECT BY PRIOR NODE_ID=PARENT_ID
)
此表目前数据量35000,若XX节点下子节点数量在2000左右,查询速度很慢,耗时20分钟,几百条都需要80多秒。
求优化方案