[英]Mysql query modification for best Performance
我在 MySQL 查詢中使用 Round() function 來獲得具有 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));
您想知道在 MySQL 或您的應用程序中四舍五入到小數點后三位是否更好。
只要 SQL 語句包含SUM(ORDER_VALUE)
,就沒有關系,至少就准確性而言。 在舍入之前, SUM()
操作使用它所操作的列的精度。
而且,您的選擇之間的性能差異太小而無法衡量。 遠小於一微秒。
因此,問題在於盡可能使您的代碼清晰且易於推理。 你在處理別人的錢,你希望能夠說服自己你做對了。
當一位老客戶詢問精度的第四位和第五位發生了什么變化時,您想給出一個簡短而正確的答案。
您、您未來一年后的自己和您的同事是否更容易閱讀 SQL 中的 ROUND 或 Java 中的字符串格式內容?
我贊成將業務規則放在代碼中的一個位置。 SQL SUM
是一個業務規則。 所以ROUND
應該是 go 。
我更喜歡 SQL 版本——對我來說擊鍵次數更少。
SELECT SUM(ROUND(ORDER_VALUE,3)) FROM Orders
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.