当行数大于 1.000.000 时,Oracle APEX 呈现数据的速度变慢

Posted

技术标签:

【中文标题】当行数大于 1.000.000 时,Oracle APEX 呈现数据的速度变慢【英文标题】:Oracle APEX Presenting Data Slower When Row Count bigger than 1.000.000 【发布时间】:2017-02-17 09:27:15 【问题描述】:

在 SQL Developer 中键入查询时,它会在不到一秒的时间内返回数​​据。在 Oracle APEX 中执行相同操作需要更多时间,超过 5 秒。我进入 DEBUG 部分看看出了什么问题,它会返回给我:

-IR binding: "APXWS_MAX_ROW_CNT" value="1000000"

我发现它返回超过 1.000.000 行,这就是速度较慢的原因。但不知道如何解决它,以得到与 SQL Developer 中大致相同的时间?

【问题讨论】:

【参考方案1】:

“将Maximum Row Count 属性保留为null,这样经典报表就不会一直获取到这个数字,交互式报表也不会引入分析函数count(*) over ()。

不要使用带有 Z 的分页类型,因此经典报表不会获取所有行,并且交互式报表不会再引入 count(*) over ()。"

来源:http://rwijk.blogspot.ca/2016/11/performance-aspects-of-apex-reports.html (如果链接消失,我也将其保存在回程机器中:http://web.archive.org/web/20170706183715/http://rwijk.blogspot.ca/2016/11/performance-aspects-of-apex-reports.html

【讨论】:

【参考方案2】:

Maximum Row CountMaximum Rows per Page 设置一些限制可以帮助您减轻负载。 您在网页顶点方面的表现从未与 SQL Developer 相同。

【讨论】:

谢谢。我知道它不能像 SQL Developer 那样快,而是慢 6.7 倍?附言如何增加最大行数? 在你的 IR 的标签属性中设置最大行数。 性能取决于多种因素(浏览器、网络、IR 实现......)。 APEX 版本 5.0/5.1? Apex 版本是 5.0.1.00.06 下一步是什么? 将您的 SQL Developer SQL Array Fetch Size 设置为 1000000 并再次检查差异,因为这将更接近苹果对苹果。或将 APEX 最大计数设置为 100

以上是关于当行数大于 1.000.000 时,Oracle APEX 呈现数据的速度变慢的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL 转置数据

用逗号格式化数字

icodelab 最多的约数

当行丢失时,用 Oracle SQL PIVOT 结果中的自定义值替换 NULL

将数据批量插入 Oracle 数据库的最佳方法

我想在oracle数据库中插入十亿条记录