哪个更快?代码乘法还是SQL乘法?

问题描述 投票:2回答:6

问题:

什么更快:将2乘以一个SQL表的两倍并返回该表,或者返回该表并乘以代码中的两个列值?

您可以假设无论如何都需要返回需要相乘的两列。

sql sql-server sql-server-2005 sql-server-2008
6个回答
2
投票

乘法是一种非常快速的计算,并且是否要求从SQL或从其他地方执行此操作都不会有任何区别。可能会使SQL更快的一件事是它可以一次完成(尽管这取决于SQL的实现方式),就好像您在代码中这样做一样,您必须循环遍历结果集,但是随后再次,您可能仍会这样做。

但是,真正的答案是没有关系,除非您打算一次乘以十百万个数百万。


1
投票

如果您是SQL,SQL会更快

  • 使用有效的硬件算术(more)使用适当的数据类型
  • 有效使用联接/视图。

并且通常-避免使用分隔的字段(more


1
投票

我看到SQL进程比本机代码慢得多的唯一时间是在执行过多的功能和日志时。为什么,我不知道,因为CPU要做这两种方式的工作量都相同。

唯一可能的原因是T-SQL是一种脚本语言。您从未提及您使用的语言。

正如其他人提到的,进行测试。

真正的答案是仅对需要的记录进行数学运算。您应该使用SQL实现的。

当然,在极端情况下,您可以在本机代码中使用SSE(或带有Sandy Bridge的AVX),这当然会产生明显更快的结果。我不认为SQL Server能够应用这种优化。


0
投票

SQL,如果您做对了!


0
投票

在这种情况下,SQL在检索结果集时将Mulitply包括在select语句中。如果您使用代码编写代码,则必须分别遍历结果集,这将非常耗时。

另一方面,如果您只是返回两个值并想将其相乘,则无论其代码还是sql都没关系:)


-1
投票

答案是用代码来完成,因为DBMS可能是错误的。已知SQL Server会弄错它。

尝试一下,请注意两个结果之间的可怕差异:选择1.0 * 3/2选择3/2 * 1.0

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