1

我正在使用 Oracle APEX 4.2.2 并基于视图构建了一个树区域。

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

现在底层视图可以改变记录大小,但对于我在这里讨论的示例,我有超过 6000 条记录,我需要从中构建 Oracle 树层次结构。

我注意到的一件事是,如果我将记录大小减少到 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 条记录。

4

2 回答 2

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、另一个插件……我还没有真正探索过这些,因为我还没有处理过这么大的树。

于 2013-08-07T09:28:04.797 回答
0

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

于 2014-01-29T17:11:34.620 回答