2012-08-17 26 views
0

我有我們系統中每個用戶的統計數據。這些統計數據需要經常更新。如何構建包含大量數據的MYSQL表?

的統計數據看起來是這樣的:

Campaign : Performance 
Campaign : Performance 

每個戰役都有它存儲在另一個表中MYSQL自己的數據。性能指標需要針對每個用戶和每個活動頻繁更新。有超過1000個廣告系列需要爲超過5000個用戶進行更新。

起初,我認爲簡單地使當查詢數據庫,這些活動將在自己的國家被搜索剛剛存儲的數據是一個巨大的VARCHAR列「CAMPAIGNID-性能,campaignId2-性能,...」

先以最高性能降序排列。 COUNTRY數據存儲在廣告系列表格中。在我的新表格中,我正在考慮爲每個國家制作一個專欄,並按照他們各自的表現分割這些活動。我不確定這是否會更有效率。

有了這個可憐的描述,我希望有人可以建議一個最佳結構。謝謝!

+0

你只是想要一個新的表,將已經在其他表中的信息去標準化? – invertedSpear 2012-08-17 16:23:14

+0

不 - 性能數據當前未存儲在數據庫中。 – Dan 2012-08-17 16:29:07

+0

如果你的意思是你在考慮把它分解成每個國家的不同表格,那麼考慮[分區](http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html)而不是國家/地區列表。 – 2012-08-17 18:03:44

回答

1

我想你會想把這個性能存儲在一個3列的表中:campaignID,userID,performance。這會給你最大的靈活性,然後查詢信息,但你可能需要它。通過廣告系列或用戶可輕鬆聚合效果。並快速加入到廣告系列表中,您可以按國家進行彙總。

+0

這將創建5000 * 1000行。搜索效率更高嗎? – Dan 2012-08-17 17:09:20

+1

比什麼效率更高?正確索引rowcount並不是真正的重要因素。當您需要某個用戶的特定廣告系列的效果或需要爲所有用戶彙總廣告系列的效果時,肯定會比使用逗號分隔列表的「巨大VARCHAR列」更高效,因爲您無需分析通過文本字符串來查找數據,您只需在該處查詢即可。 – invertedSpear 2012-08-17 17:29:25

+0

這是個好建議。謝謝! – Dan 2012-08-17 18:02:45

0

那麼,你的建立一個包含1000個廣告系列和5000個用戶的MySQL數據庫?這些活動是否包含每個國家的表演?如果是這樣,我會建議製作一個名爲Country的列,然後是Performance Column。此外,這將有助於知道你想要查看信息的內容。

+0

每個用戶都擁有這1000個廣告系列的數據,但每個用戶的廣告系列的效果都不相同。每個活動也只能在某些國家運行。這些信息可在我的廣告系列表格中找到。 MYSQL查詢將在PHP中完成 - 我不確定這是你問的問題? – Dan 2012-08-17 16:27:12

+0

嗯,我不是很熟悉PHP,但是如果你使用Visual Studio .Net,你可以將程序連接到MySQL。 Visual Studio將從MySql數據庫中提取所有數據,並允許您以您喜歡的方式進行管理。如果這對你沒有幫助,那麼我感到抱歉。 :/ – 2012-08-17 16:38:45

相關問題