问题:
什么更快: 在SQL表中乘以2个双精度并返回表,或返回表并在代码中乘以两列值?
您可以假设无论如何都需要返回需要相乘的两列。
答案 0 :(得分:2)
乘法是一种非常快速的计算,无论是从SQL还是从其他地方要求芯片进行,都不应该有任何不同。可能在SQL中更快的事情是它可以在一次传递中完成(虽然这取决于SQL如何实现它),就像你在代码中执行它一样,你必须在结果集中循环,但是无论如何,你可能会这样做。
真正的答案是,除非你计划一次增加数百万的数字,否则它确实无关紧要。
答案 1 :(得分:1)
答案 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