2011-05-17 54 views
0

我正在编写一个存储过程,该过程具有SUM,AVG操作数以百万计的数据与3至5列分组。 我想知道如果我在C#中这样做,这意味着如果我只从数据库读取数据到C#对象,并在对象(或数据表)中进行计算(总和,平均等)。这会提高性能吗?SQL VS C#聚合操作性能

我喜欢创建更快的应用程序。

在此先感谢。 Shuvra

回答

11

数据库的建立是为了高效地对数据进行排序,选择和分组。让它做它为之而建的工作。如果你用C#代码实现它,你首先必须要求数据库提供所有的数据,然后你必须把它传送给客户端。这将比仅仅让DB进行计算慢很多。

+0

谢谢。但在这种情况下,我的业务逻辑将在SP而不是业务层。 – Shuvra 2011-05-17 15:56:52

5

在存储过程中执行总和平均操作会更好,性能更好。因为如果你想用C#执行这些操作,你必须获取数百万条记录,并且在数百万条记录中,你将得到总和,平均操作,这肯定会在很大程度上损害性能,而如果你做了总和,平均操作SP,您只需获取汇总记录,从而利用更少的带宽并提高性能。

+0

感谢您宝贵的答复。但我想知道为什么在最近的项目业务层是一个问题。开发人员正在将业务逻辑从SP移至业务层(C#类)? – Shuvra 2011-05-17 15:55:47

+2

当拥有更复杂的业务规则时,C#比T-SQL更适合表达它们。尽管如此,应该仔细制作用于提取数据的SQL查询,以仅获取业务层真正需要的数据。 – 2011-05-17 16:01:17

+0

我在我的应用程序中也这样做。我的理由是: - 调试和测试C#代码更容易 - C#代码是面向对象的,而SP不是 - 您无法轻松访问存储过程中的远程服务(即发送电子邮件通知给客户端) – Zruty 2011-05-17 16:01:40