我使用的是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条记录,否则它不会在那里工作。
答案 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 的大小有限。 我建在一个下拉预滤器中,因此用户必须缩小她/她想要显示的内容。