在PL/sql oracle存储过程中,尝试使用分析函数

在PL/sql oracle存储过程中,尝试使用分析函数,oracle,optimization,stored-procedures,plsql,Oracle,Optimization,Stored Procedures,Plsql,为了提高性能,在存储过程中使用游标或分析函数更好吗?如果没有必要,最好不要使用游标。如果没有必要,最好不要使用游标。如果没有必要,最好不要使用游标。最好使用纯SQL处理数据的游标。这是因为PL/SQL和SQL引擎之间的上下文切换是一项开销。游标及其所有附加代码也是一种开销 分析函数是SQL的一个极好的扩展,它允许我们在SELECT语句中执行以前需要的过程代码 当然,如果你想处理大量的数据,那么这绝对是最好的方法。如果您需要使用,则不可避免。最好以一种集合方式使用纯SQL,而不是使用游标来处理数据

为了提高性能,在存储过程中使用游标或分析函数更好吗?

如果没有必要,最好不要使用游标。

如果没有必要,最好不要使用游标。

如果没有必要,最好不要使用游标。

最好使用纯SQL处理数据的游标。这是因为PL/SQL和SQL引擎之间的上下文切换是一项开销。游标及其所有附加代码也是一种开销

分析函数是SQL的一个极好的扩展,它允许我们在SELECT语句中执行以前需要的过程代码


当然,如果你想处理大量的数据,那么这绝对是最好的方法。如果您需要使用,则不可避免。

最好以一种集合方式使用纯SQL,而不是使用游标来处理数据。这是因为PL/SQL和SQL引擎之间的上下文切换是一项开销。游标及其所有附加代码也是一种开销

分析函数是SQL的一个极好的扩展,它允许我们在SELECT语句中执行以前需要的过程代码


当然,如果你想处理大量的数据,那么这绝对是最好的方法。如果需要使用,则不可避免。

与游标相比,使用纯SQL语句总是更好的选择。当使用纯SOL处理数据很麻烦时,使用游标

我们使用游标处理每一行。通过批量收集,我们减少了上下文切换,但仍然使用Limit子句在一个周期内只处理几千行。使用纯SQL,只要有足够的资源可用,就可以插入或更新更多的行。回滚段是一个限制因素。在一个项目中,我编写了非常复杂的纯SQL,在非常大的数据仓库环境中插入数百万行,但失败了。DBA提供了非常大的回滚段。我无法通过批量收集实现这种性能


请注意,大多数公司不会为您提供这种设施。因此,请根据现有资源做出决定。您可以将两者结合使用

与游标相比,使用纯SQL语句总是更好的选择。当使用纯SOL处理数据很麻烦时,使用游标

我们使用游标处理每一行。通过批量收集,我们减少了上下文切换,但仍然使用Limit子句在一个周期内只处理几千行。使用纯SQL,只要有足够的资源可用,就可以插入或更新更多的行。回滚段是一个限制因素。在一个项目中,我编写了非常复杂的纯SQL,在非常大的数据仓库环境中插入数百万行,但失败了。DBA提供了非常大的回滚段。我无法通过批量收集实现这种性能


请注意,大多数公司不会为您提供这种设施。因此,请根据现有资源做出决定。您可以将两者结合使用

您可能想添加更多关于您试图实现的目标的信息。最好的方法是提供一个例子来说明你的意思。你可能想添加更多关于你想要实现的目标的信息。最好的办法是提供一个例子来说明你的意思。你从哪里得到这个童话故事的?最好避免显式游标,因为您可能会忘记关闭它们。但是隐式游标完全没有问题,如果检索多行,则绝对不可避免。大多数人不知道区别,部分原因是“游标”通常意味着“显式游标”,就像“视图”并不意味着“物化视图”。您关于隐式游标检索多行的警告足以说明用法取决于细节(我们没有),但基于集合的解决方案仍然更可取(而且很可能,因为集合编程与过程性/面向对象编程不同)@Codo:如果一个人可以在一条SQL语句中执行所需的操作,而不是使用PL/SQL游标执行选择和(假设)以后的插入、更新或删除,那么他应该这样做。这就是OMG Ponies的观点。我同意:如果可以使用任何聚合技术(“常规”分组,分析函数)用一条语句来完成某件事,那么这几乎总是比在游标循环中处理相同的数据要快。你从哪里得到这个童话故事的?最好避免显式游标,因为您可能会忘记关闭它们。但是隐式游标完全没有问题,如果检索多行,则绝对不可避免。大多数人不知道区别,部分原因是“游标”通常意味着“显式游标”,就像“视图”并不意味着“物化视图”。您关于隐式游标检索多行的警告足以说明用法取决于细节(我们没有),但基于集合的解决方案仍然更可取(而且很可能,因为集合编程与过程性/面向对象编程不同)@Codo:如果一个人可以在一条SQL语句中执行所需的操作,而不是使用PL/SQL游标执行选择和(假设)以后的插入、更新或删除,那么他应该这样做。这就是OMG Ponies的观点。我同意:如果可以使用任何聚合技术(“常规”分组,分析函数)用一条语句完成某件事,那么这几乎总是比在游标循环中处理相同的数据更快