2017-02-08 66 views
0

我有不同的產品,我想存儲的價格爲每一種取決於具體的日期... 例如,如何創建一個MySQL數據庫存儲日期 - 價格

product 1 - from 01/01/2017 to 31/03/2017 price 30 
product 1 - from 01/02/2017 to 28/02/2017 price 20 
product 1 - from 02/02/2017 to 10/02/2017 price 10 

然後產品1從31/01/2017年至2017年2月2日費用爲60

現在我創建這樣

id_product - price - date 
1 - 30 - 01/01/2017 
... 
1 - 30 - 31/01/2017 
1 - 20 - 01/02/2017 
1 - 10 - 02/02/2017 
... 

然後這個商品的 「簡單」 的dB具有90行,365爲每年 - >每個產品...

而這種隨時間緩慢分貝過濾...

如何優化數據庫結構?

+0

爲什麼有兩個價格範圍2月2日至10日? – Strawberry

+1

對我來說很好。雖然您只需要存儲範圍開始(如果存在重疊,則範圍開始和範圍結束)。如果沒有重疊,那麼你應該在(id_product,date)上有一個索引,並且任何一種方式的日期顯然都應該是日期數據類型。你通常不會爲每一天存儲一個值 - 但是重疊會使事情複雜化 - 部分原因是因爲突然不清楚你的PRIMARY KEY可能是什麼。 – Strawberry

+1

這是一個非常小的桌子。每個產品每年只有40,000行?這不會減慢過濾*提供*您有適當的索引。沒有索引,即使是100行表格也會很慢 –

回答

-1

這將是一個非常大的表,但它沒關係。

也許你應該經常刪除一些行以獲得更好的性能。

例如: - 你在2018年7月2016年7月的行刪除...

+0

我認爲這就是分區的目的。 – Strawberry

+0

這實際上是一個**小**表。每年只有40K行和產品。通過適當的索引,絕對沒有延誤的理由。分區適用於百萬行範圍內的非常大的表格 –