簡體   English   中英

Mysql 查詢修改以獲得最佳性能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM