performance - Oracle Analytic Functions的成本高昂吗?

标签 performance oracle function

使用oracle分析函数时,是否有人遇到性能降低的情况? lead()oracle分析函数用于在表中生成一个新字段。基本上,它将允许前一行的字段值用作当前行的新字段的值。说明计划指示对使用了oracle分析功能的表执行全表扫描。

为了避免进行全表扫描,我可能只需要使用after insert/update触发器手动使用前一行的值填充具体字段即可

是否有人因为成本高而决定不使用oracle分析功能?难道不应该使用oracle解析函数吗?

最佳答案

分析功能并非没有代价:它们必须存储中间结果的数据(运行总计,窗口功能...),这需要内存,并且它们还需要一定的处理能力。一些函数将需要到达结果集的最后一行才能返回结果(例如MIN/MAX)。大多数功能还将具有隐式SORT操作。

因此,它们在资源上并不是免费的,但是它们是SET操作,因此在大多数情况下,它们比编写自定义逐行plsql过程或传统SQL效率要高得多。

您必须根据具体情况进行比较和基准测试,但是如果明智地使用它们,您会发现它们是功能强大的性能工具,而不是障碍。

关于performance - Oracle Analytic Functions的成本高昂吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467018/

相关文章:

python - 在 numpy 数组上的紧密双 for 循环中高效使用 python 生成器

mysql - 我应该牺牲我的 innodb_buffer_pool_size/RAM 来为 query_cache_size 腾出空间吗?

c# - 在性能方面有什么更好的?类型 [,] 还是类型 [][]?

function - 将现有函数分配给 val?

JavaScript - 从函数外部访问数组

javascript - 生成不在颜色数组中的颜色的最快方法

java - 从 Java 字符串中删除字符 e280a8

oracle - 我可以使用 Oracle PL/SQL 同时持有两个锁吗?

java - Oracle 查询调用形成 Java 持久性时的临时空间行为

c++ - 函数头中的 C/C++ 数组变量