【发布时间】:2022-01-23 12:48:13
【问题描述】:
我在 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));
【问题讨论】:
-
在java端进一步处理从MySQL接收到的数据是否需要取整值?在 MySQL 查询中进行舍入。还是仅显示此数据?显示控件属性时的格式(不是圆形!),或者,如果显示时没有任何控件,则在 Java 代码中。
-
在这两种情况下是否有任何性能变化?
-
性能没有差异。每个行集一个舍入?它的开销远低于测量精度 - 没有机会检测到。
-
非常感谢,不像每行集的舍入,使用分组依据,所以例如舍入将应用于 2000 行数据集中的 100 行
-
如果您的行集产生 100 行,那么 ROUND() 将被应用 200 次 - 在 MySQL 和 Java 中都是如此。并且相信——MySQL 会更有效地做到这一点,因为值处理是它的业务。 MySQL 中的微小舍入函数可用于在 Java 中使用几乎相同的舍入函数创建额外的对象。
标签: java mysql sql performance query-optimization