xbba2004 2017-10-12 13:25 采纳率: 0%
浏览 808

oracle树形结构查询优化

SELECT DISTINCT CONNECT_BY_ROOT(SEG.SEGMID) CC
FROM ADDREGM SEG
WHERE EXISTS (SELECT 1
FROM ADDRSEGMEQP EQP
WHERE EQP.DELETESTATE = 0
AND EQP.RESTYPEID = 2530
AND SEG.SEGMID = EQP.ADDRSEGMID)
AND SEG.DELETESTATE=0
AND SEG.SEGMTYPE>=180007
START WITH SEG.SEGMTYPE=180007
CONNECT BY PRIOR SEG.SEGMID = SEG.PARENTSEGMID

    1、ADDREGM 标准地址表  ADDRSEGMEQP 标准地址绑定设备表
  2、查找SEGMTYPE大于180007节点SEGMID 如果查询到下级有一个RESTYPEID = 2530 的ADDRSEGMID 即该SEGMID为所需
    3、瓶颈 oracle的 start with connect by prior 是中序遍历 遍历所有节点,时间代价太大
  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 10:17
    关注

    参考GPT和自己的思路:

    针对你的问题,我可以给出以下建议来优化oracle树形结构查询:

    1.使用递归查询代替connect by prior语句

    使用递归查询可以大大提高查询效率,因为它可以在较短的时间内找到符合条件的记录。相比之下,connect by prior语句的效率较低,因为它需要遍历整个树形结构。

    2.使用物化视图

    物化视图是一个结果集,可以作为基本表使用。它存储了树形结构的一部分,因此可以更快地检索数据。物化视图可以计划刷新,确保其数据与基本表保持同步。

    3.更改表结构

    如果树形结构所在的表结构不够优化,可以更改表结构以提高查询效率。例如,可以添加新的索引或更改列类型来提高查询速度。

    总之,优化树形结构查询可以通过使用递归查询、物化视图或更改表结构等方法来实现。这些方法可以大大提高查询效率,使查询更快速和高效。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)