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

时间:2011-03-01 16:08:20

标签: sql sql-server sql-server-2005 sql-server-2008

问题:

什么更快: 在SQL表中乘以2个双精度并返回表,或返回表并在代码中乘以两列值?

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

6 个答案:

答案 0 :(得分:2)

乘法是一种非常快速的计算,无论是从SQL还是从其他地方要求芯片进行,都不应该有任何不同。可能在SQL中更快的事情是它可以在一次传递中完成(虽然这取决于SQL如何实现它),就像你在代码中执行它一样,你必须在结果集中循环,但是无论如何,你可能会这样做。

真正的答案是,除非你计划一次增加数百万的数字,否则它确实无关紧要。

答案 1 :(得分:1)

如果你

,SQL会更快
  • 使用适当的数据类型和高效的硬件算法(more
  • 有效使用加入/查看。

一般而言   - 避免使用分隔字段(more

答案 2 :(得分:1)

我唯一一次看到SQL进程比本机代码慢得多,就是在执行过多的权限和日志时。为什么,我不知道,因为CPU具有相同的工作量。

唯一可能的原因是T-SQL是一种脚本语言。你从未提到过你正在使用的语言。

正如其他人所说,测试。

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

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

答案 3 :(得分:0)

SQL,如果你做对了!

答案 4 :(得分:0)

在这种情况下,SQL在检索结果集时包含Mulitply作为select语句的一部分。如果您正在使用代码,那么您将不得不单独遍历结果集,这将非常耗时。

另一方面,如果你只是返回两个值并想要乘以它,那么它的代码或sql无关紧要:)

答案 5 :(得分:0)

答案是在代码中执行,因为DBMS可能是错误的。众所周知,SQL Server错误,因为它不遵守交换式数学定律。

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