Mysql 查询修改以获得最佳性能

Mysql query modification for best Performance

我在 MySQL 查询中使用 Round() 函数来获取精度为 3 的 SUM() 值。但我不确定这是最好的方法还是获取实际值并在 java 或 js 中四舍五入。 我有点困惑哪个是最佳实践,为什么?

Select ROUND(SUM(ORDER_VALUE),3) from Orders

   Select SUM(ORDER_VALUE) from Orders  group by STOCK_ID:

after that 

   DecimalFormat formatter = new DecimalFormat("0.000");
   System.out.println(formatter.format(25.0)); 

SELECT SUM(ROUND(ORDER_VALUE,3)) FROM Orders

您想知道在 MySQL 中还是在您的应用程序中四舍五入到三位小数更好。

只要SQL语句包含SUM(ORDER_VALUE),就没关系,至少就准确性而言。在四舍五入之前,SUM() 运算使用它所运算的列的精度。

而且,您的选择之间的性能差异太小,无法衡量。远小于一微秒。

因此,问题在于使您的代码清晰,并且易于推理,因为它可能如此。您正在处理别人的钱,并且您希望能够说服自己您做对了。

当未来的客户问到精度的第四和第五位数字发生了什么变化时,您希望给出一个简短而正确的答案。

对于您和一年后您未来的自己以及您的同事来说,阅读 SQL 中的 ROUND 或 Java 中的字符串格式化内容是否更容易?

我赞成将业务规则放在代码中的一个地方。 SQL SUM 是业务规则,因此 ROUND 应该与它一起使用。