问题:
什么更快:将2乘以一个SQL表的两倍并返回该表,或者返回该表并乘以代码中的两个列值?
您可以假设无论如何都需要返回需要相乘的两列。
乘法是一种非常快速的计算,并且是否要求从SQL或从其他地方执行此操作都不会有任何区别。可能会使SQL更快的一件事是它可以一次完成(尽管这取决于SQL的实现方式),就好像您在代码中这样做一样,您必须循环遍历结果集,但是随后再次,您可能仍会这样做。
但是,真正的答案是没有关系,除非您打算一次乘以十百万个数百万。
我看到SQL进程比本机代码慢得多的唯一时间是在执行过多的功能和日志时。为什么,我不知道,因为CPU要做这两种方式的工作量都相同。
唯一可能的原因是T-SQL是一种脚本语言。您从未提及您使用的语言。
正如其他人提到的,进行测试。
真正的答案是仅对需要的记录进行数学运算。您应该使用SQL实现的。
当然,在极端情况下,您可以在本机代码中使用SSE(或带有Sandy Bridge的AVX),这当然会产生明显更快的结果。我不认为SQL Server能够应用这种优化。
SQL,如果您做对了!
在这种情况下,SQL在检索结果集时将Mulitply包括在select语句中。如果您使用代码编写代码,则必须分别遍历结果集,这将非常耗时。
另一方面,如果您只是返回两个值并想将其相乘,则无论其代码还是sql都没关系:)
答案是用代码来完成,因为DBMS可能是错误的。已知SQL Server会弄错它。
尝试一下,请注意两个结果之间的可怕差异:选择1.0 * 3/2选择3/2 * 1.0