使用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/