2011-06-20 27 views
0

我正在研究重新構建現有應用程序,並且想知道如何處理表格。我應該如何在MySQL中對年度數據進行分區

目前,我們每年有一張桌子(data_2009,data_2010等)。大多數查詢僅按年完成 - 例如,從data_2010中選擇總和(銷售額),其中user = 10。

每年有大約100萬行;我們到目前爲止已經有10年了,而且我們很可能會無限期地繼續下去。

但是,有時候,計算應該在整個過程中完成。目前,這是通過每年運行一次的單獨彙總表處理得不好,並且每個用戶每月都有一些行(並且隨後與當前年度相加/統計等)。這有各種限制,我想放棄彙總表的想法。

有一張大桌子和每年創建視圖會更好嗎?或留在單獨的桌子,並有一個所有時間的看法?例如,一種觀點認爲是

SELECT * FROM data_2005 工會 SELECT * FROM data_2006 等

的一個問題是,索引如何將被處理 - 如果我有場「用戶」的指標,也就是說,是在兩種情況下使用?

回答

1

使用一個表,但在一年中使用表分區和分區。有關partioning更多信息可以在這裏找到

http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

+0

我可以用特定的分區選擇還是我包括日期各時間範圍?例如「select * from data_2010 where user = 10」必然會變成「select * from data where user = 10 and date> ='2011-04-01'and date <='2012-05-01'」(我正在使用財政年度,而不是日曆年不幸)? – Apemantus

+0

是的,這是正確的,你將使用一個表,但mysql會處理「引擎蓋下」的單個表。在mySQL手冊中:「分區......使您可以根據需要設置的規則在文件系統中分配單個表的各個部分。實際上,表的不同部分在不同位置存儲爲單獨的表」 。爲簡單起見,我仍會在日曆年進行分區,而不是根據財政年度進行分區。 –

相關問題