【发布时间】:2020-08-10 13:42:15
【问题描述】:
我一直在研究哪种方法可以更好地优化我的系统,无论是在我的存储过程 (SQL) 中使用递归还是在 C# 中使用递归。
我读过两种观点,其中一种解释说在 c# 中使用递归更复杂、更慢,但使用 tail-call optimization 解决了这个问题,但 C# 不支持这一点。
另一方面,我读过一个线程,在他们用 C# 编写的程序中使用它来减少数据库负担。
我想知道在可以存储和检索数千条记录的系统中哪个更好。
【问题讨论】:
-
sql 语言不太适合使用递归。 c# 中的递归不是很复杂。问题是在数据库和 c# 之间传输的数据量以及完成递归所需的查询数。如果您可以查询一次数据库并检索所有数据(数据量不会在 c# 中产生内存问题),那么我建议将数据放入 c# 数据表(使用适配器)。然后在 c# 中进行递归。
-
谢谢!不过,我一直将数据放在 IEnumerable 而不是 DataTable 中。我想知道哪个更好?
-
我更喜欢数据表,因为我可以使用适配器在一条指令中完成。要创建 IEnumerable,您需要使用数据读取器和循环。
标签: c# sql recursion optimization