我必须计算涉及多个表中的数据的值。我想知道与将数据读入数据集(使用简单的选择存储过程)然后循环记录相比,使用带有游标的存储过程是否会提供性能优势?数据集不大,由 6 个表组成,每个表大约有 10 条记录,主要是 GUID、几个 nvarchar(100) 字段、一个 float 列和一个 nvarchar(max)。
最佳答案
这可能取决于您可能检索回来的数据集(数据集越大,在 SQL Server 内部执行而不是传递它可能更符合逻辑),但我倾向于认为,如果您想要执行计算,在代码中进行,而不是使用存储过程。如果您需要使用游标将数据集中在一起,那就这样吧,但我认为应该避免使用它们来进行计算和其他非检索功能。
编辑:此 Answer另一个相关问题将给出游标与循环的一些优点和缺点。这个答案似乎与我之前关于扩展的断言(见上文)相冲突。似乎表明您获得的数据越大,您就越可能希望将其移至代码中而不是存储过程中。
关于SQL Server - SQL 游标与 ADO.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802549/