2013-01-07 292 views
0

我會盡量讓這個問題儘可能清楚,但要記住,英語不是我的第一語言。我有一個使用MySQL數據庫以PHP編寫的Web應用程序。在表我可能有成千上萬個條目,並且在每個條目我保存這個數據:在客戶端計算機上還是在服務器上計算?

$net_value = $minutes*($hourly_rate/60); 

$hourly_rate, 
$minutes 

,當我通過一個循環處理我的表,我用下面的公式計算淨值

現在的問題是,我應該在我的表上添加一個$ net_value字段,使用JQUERY計算客戶端的淨值,然後將計算結果上載到$ net_value字段中?考慮到我可能有1000個用戶同時訪問系統,您認爲哪一個最好?

謝謝你的幫助,

多納託

+2

這個數字的準確性有多重要?您留給客戶提供的任何數據都可能是僞造的。 – Grambot

+1

經典時間vs內存摺衷。這裏真正的問題是你將不得不根據淨值進行查找(例如:特定範圍)?如果你是,那麼我會存儲它。如果沒有,那麼只需要在飛行中進行計算。 (ps。在你的情況下做它的客戶端將不值得) – Supericy

回答

0

一般來說,我不會在數據庫,簡單計算的值存儲。在PHP中做這個計算需要很少的時間,甚至不值得考慮。

+2

或者,在你的SQL查詢中計算 –

+0

@Mark - true,特別是如果循環的唯一目的只是計算這些值。 –

1

這取決於價值的重要性。如果它一直被許多人訪問,它可能值得存儲在數據庫中。

但我不建議使用jQuery來進行計算,爲了更好的安全性,請在服務器端進行計算。

0

有一個很好的理由將計算存儲在數據庫中。好的原因是,這種計算可能在應用程序中的多個地方使用。

我建議你創建一個視圖,像這樣:

create view vw_rates as 
    select t.*, minutes*(hourly_rate/60) as net_value 
    from t 

通過將在視圖中,每個人都將使用相同的定義。因此,按區域或時間彙總的報告將使用相同的定義。在其他數據庫中,您可以使用計算列做同樣的事情,但MySQL不支持它們。

從性能角度來看,對如此少量的數據進行這樣簡單的計算可​​能沒有什麼區別。但是請記住,如果您有多個線程/進程,數據庫可以並行執行這些類型的計算。

相關問題