递归查询速度慢吗?

时间:2011-12-12 10:46:46

标签: sql oracle recursive-query

我的经理让我不要使用递归查询,因为默认情况下递归意味着他声称速度慢。

我只是想知道递归查询是否很慢以及是否还有其他替代方法。

编辑: 我一般都是在谈论递归查询。我的经理刚刚告诉我停止使用递归。他声称在C#递归函数很慢。所以不要在Oracle上使用递归查询,这也可能很慢。

2 个答案:

答案 0 :(得分:3)

在绩效方面,只有基准才算重要。猜测和类比是没有价值的。

没有绝对的理由说明递归查询应该执行得很糟糕,因为它们是递归的。通常情况下,递归查询对大型数据集的代价要高于对类似大小的表的非递归查询。

这不是从不使用递归查询的论据:它是用于测试针对代表性数据卷的CONNECT BY查询以及查看是否存在性能问题的参数。避免递归查询的机制(例如,维护表来存储展平的层次结构)具有自己的成本配置文件。

如果您想了解更多有关递归查询的替代方法,我前一段时间回答了相关问题。 Check it out.

答案 1 :(得分:2)

一般来说,递归并不一定很慢。

我会考虑一个简单的事实,就是有人说出这样一个普遍的伪事实作为证明他应该在这件事上被忽略的事实。

如果编写递归代码,则不太了解实际执行的内容。您的源代码与实际执行的内容之间可能会发生很多事情。

那说:在很多情况下,递归速度很慢,或者消耗大量内存或导致堆栈溢出。

但通常递归是最简单的解决方案。

因此,如果您遇到问题:我可以使用递归来解决这个问题。做吧。

然后测试性能和可伸缩性是否合适。如果不是,您可以在调整解决方案时使用递归实现作为test oracle(可能通过删除递归)。

相关问题