在SQL查询中使用CTE递归与在C#中使用递归的对比

问题描述 投票:0回答:1

我一直在研究哪种方法能更好地优化我的系统,是在我的存储过程(SQL)中使用递归,还是在C#中使用递归。

我读过两种观点,其中一种解释说,在C#中使用递归是比较复杂和缓慢的,但用一个 尾号优化 但C#不支持这个。

另一方面,我读到一个帖子,在他们用C#写的程序中使用了它来减少数据库的负担。

我想知道在一个要存储和检索成千上万条记录的系统中,哪种方法更好。

c# sql recursion optimization
1个回答
1
投票

一般来说,你最好写一个 单一 查询,避免了往返于数据库的开销。

你还没有指定你要做什么。 但我希望递归CTE在数据库中比在应用程序中工作得更好,原因如下。

  • 你没有对数据库进行多次调用的开销。
  • 中间结果可以以内部数据库格式保存。
  • 你不必将数据返回给应用程序,再传回数据库。

此外,您可能在C#中使用递归来处理的一些事情可能会更好地使用SQL结构来实现,例如窗口函数。

© www.soinside.com 2019 - 2024. All rights reserved.