Oracle APEX树层次结构限制/问题

时间:2013-08-06 14:57:41

标签: sql tree oracle-apex

我使用的是Oracle APEX 4.2.2,并根据视图构建了一个树区域。

现在当我接受这个查询(见下文)并在Oracle SQL Developer中运行此查询时 - 一切都很好但是当我在基于Tree区域的Oracle APEX页面中放置相同的查询时 - 所有保存都正确但是当我运行此查询,根本没有显示任何记录/树。

现在基础视图可以改变记录大小,但是对于我在这里讨论的示例,我只需要6000多条记录来构建Oracle Tree层次结构。

我注意到的一件事是,如果我将记录大小减少到500行,树就会完美显示。

问题:

1)现在有一个我不知道的限制,因为我真的需要根据是否有500条记录或6000条记录来实现这一目标?

2)对于树层次结构表示,6000行是否太多?

3)可能是因为Oracle APEX 4.2.2现在使用js来构建树,并且由于数据量而导致问题?

4)有没有办法减少树木记录的深度,这样我仍然可以至少向用户展示一些东西?

我的查询类似于:

    SELECT case when connect_by_isleaf = 1 then 0
            when level = 1 then 1
       else -1
       end as status,
       level,
       c as title,
       null as icon,
       c as value,
       null as tooltip,
       null as link
    FROM t
    start with p IS NULL
    CONNECT BY NOCYCLE PRIOR c = p;

此外我还注意到,如果我尝试在SQL Workshop中运行查询,除非我将记录大小减少到500条记录,否则它不会在那里工作。

2 个答案:

答案 0 :(得分:0)

我问过使用IE浏览器是因为“太大的树”'问题特别在IE中播放。我已经看过这个问题,并且已经问了好几次。结论很简单,关于它并没有太多的事情要做,而且浏览器通常不能很好地应对具有如此大数据集的树。通常情况下,问题不存在或者在ff或chrome方面是最小的,即大多数情况下都没有打球,我的猜测是这与记忆和dom操作有关。

  

1)现在有一个我不知道的限制,因为我真的需要   根据是有500条记录还是6000条来实现这一目标   记录?

没有限制。

  

2)对于树层次结构表示,6000行是否太多?

可能,是的。

  

3)可能是因为Oracle APEX 4.2.2现在正在使用js   用于建造树木并由于数量而导致问题   数据?

自4.0以来,正在使用jstree构建树(不知道3.2)。 Apex在树区域中输出一个全局变量,该变量包含所有数据。然后,窗口小部件的初始化将创建完整的ul-li列表结构。问题的一部分可能是有很多节点开始,然后是如何通过jstree运行,以及大量的dom操作发生。我不确定jstree的新版本是否会更好(顶点版本是0.9.9而1.x已经发布了一段时间)。

  

4)是否有减少树木记录深度的方法   我仍然可以向用户显示一些东西吗?

如果要限制深度,可以使用where子句中的level来限制查询。例如

WHERE level <= 3

备选方案可能是非顶级解决方案。动态树,树节点的ajax,另一个插件,......我还没有真正探索过那些,因为我还没有处理过如此大的树。

答案 1 :(得分:0)

我经历过,可显示树节点的数量还取决于树中的文本长度(例如节点和工具提示)。文本越短,树可以显示的节点越多。但是,它可能会产生50个节点的差异,因此它无法解决您的问题,因为它无法解决我的问题。 我平庸的猜测是,这个 ul-li 的大小有限。 我建在一个下拉预滤器中,因此用户必须缩小她/她想要显示的内容。