2012-07-26 16 views
0

我很新的mysql,任何幫助將不勝感激!我的數據表最好的mysql結構

我有我的產品信息主表。 (9000+產品)

id  name   size  color 
    9809355 product one small blue 
    0109425 product two large black 

我也有cron的腳本,該得到的以下數據每個產品每隔一小時(從eBay或亞馬遜):

id  price  timestamp 
    9809355 $672.00 07/26/2012 @ 2:00pm 
    0109425 $82.00 07/26/2012 @ 2:00pm 

(價格變化的百達)

什麼是存儲這些數據的最佳方式?

我的選擇似乎是創造每件產品的表,或者我的所有數據放置到一個表中產品的價格。

+0

史蒂文,這個過程需要多長時間?我的意思是說,每隔一小時幾秒鐘,所有產品都會收集起來,還是每隔幾秒產品一個產品? – 2012-07-26 19:02:16

+0

您是否需要將歷史數據保存在數據庫中或在更新時丟棄? – 2012-07-26 19:04:08

+0

該腳本一次檢查所有產品,並在找到它們時存儲價格,因此可能需要一段時間才能完成 – 2012-07-26 19:07:58

回答

-1

創建每件產品的表很少能正確的做法。這將不必要地使連接複雜化 - 如果您想獲得所有產品的列表,您將如何使用單獨的表格進行操作?

如果你想從價格詳情解耦價格數據,你可以創建一個具有與產品信息表的一到一個關係的價格表。我通常不主張一對一的關係,但有時候這是正確的方法。

+0

如果我把所有的產品數據放在一張表中,它將會有大約500萬個條目。這不會減慢查詢速度嗎?另外,我一次只能查詢一個產品的數據,所以效率不高 – 2012-07-26 19:15:57

+0

如果您在'id'列有索引,並且在查詢中使用了'WHERE id =?'子句,則查找應該非常快速。索引查找將是O(log n)複雜度;在一個500k行的表中搜索一個單行的ID應該對索引進行19次遍歷操作的* maximum *操作,假設一個平衡的二叉樹 - 並且mysql使用的b樹索引通常比那。 (僅供參考,如果'id'是主鍵,那麼它已經定義了一個隱式索引。) – cdhowie 2012-07-26 19:26:09

+0

感謝您的信息。一張桌子應該可以正常工作。 – 2012-07-26 19:30:04