2012-11-23 28 views
1

我想知道哪裏的切入點是在數據庫中創建一個字段來保存您的數據或自己在您的代碼中生成數據。例如,我需要知道從數據庫中兩個不同列中生成的某個值。 Column1-Column2 = Column3。所以問題是在代碼中生成這些數據會更好嗎,還是應該創建一個Column3並在填充數據庫時將數據放在那裏,然後再檢索它。在我的情況下,數據是兩位數的整數或單個字符串,基本上是小數據。創建一個dataabse字段與通過編碼生成數據

我正在使用最新的mysql編程語言是PHP與mysqli庫。另外,這個網站不應該獲得太多的流量,並且數據庫的大小最多將爲200k行。

回答

2

這種類型的屬性(列)被稱爲derived attribute。你不應該把它們放在數據庫中,因爲它們會增加的冗餘度。只要將column1column2計算出來,然後取。例如像這樣,

`Column1` - `Column2` as `Column3` 

如果你不打擾查詢方式,每次創建一個view添加了派生屬性。

注意,如果計算是cpu密集型,則應考慮使用緩存。然後你必須實現如何以及何時這個緩存將失效。

+0

那是什麼,我懷疑編輯我的回答有點感謝 – vman

+0

。請再次查看。 –

+0

有趣,但我想我會在我的代碼中做到這一點清晰。計算基本上是微不足道的。 – vman

0

這取決於資源需求的計算方式以及需要多長時間完成一次。在你的情況下,它非常簡單,因此將差異存儲在單獨的列中將會過度。你可以做你的計算中的SQL查詢是這樣的:

SELECT col1, col2, col1-col2 AS col3...

相關問題