2013-05-02 56 views
0

我想創建一個表格作爲日期的表名。當我搜集股票數據的那一天,我想把它保存這樣的:創建名稱爲變量日期的表格?

$date = date('Y-m-d'); 
$mysqli->query(
    "CREATE TABLE IF NOT EXISTS `$date`(ID INT Primary Key)" 
); 

這樣,我會像一個數據庫:

2013-5-1: AAPL | 400 | 400K 
      MFST | 30 | 1M 
      GOOG | 700 | 2M 
2013-5-2: ... 

我認爲這將是更容易儲存的信息等這個,但是我看到類似的問題被關閉了。

How to add date to MySQL table name?

「生成更多的表是完全相反‘保持 數據庫乾淨。’一個乾淨的數據庫是一個有理智, 規範化,固定的模式,你可以對運行查詢「。

如果這不是正確的做法,有人可能會建議什麼是?許多人在評論這個問題時表示,這不是一個「乾淨的」解決方案?

+0

你的問題是什麼? – christopher 2013-05-02 22:11:15

+1

鏈接到相似的,已關閉的問題? – 2013-05-02 22:11:25

+0

我剛添加它。抱歉。 – 2013-05-02 22:12:00

回答

1

不要將您的數據分成幾個表。這將成爲維護的噩夢,儘管開始時似乎是明智的。

我建議你創建一個日期列,它包含你當前想要放入表名的信息。數據庫在高效存儲日期方面非常聰明。只要確保使用正確的數據類型,而不是字符串。通過向該列添加索引,查詢時也不會受到性能損失。

您所獲得的是在查詢中充分靈活。您可以從這樣的表格中提取的數據實際上沒有限制。您可以根據日期範圍等參與其他表格。當您按日期將數據分成表格時,這是不可能的(或者至少更復雜和麻煩)。例如,在一週,一個月或一年內獲得某個價值的平均值並不容易。

如果 - 並且這取決於您將收集的實際數據量 - 未來的某些時間數據會急劇增長,我估計會有超過數百萬行 - 您可以查看數據分區功能MySQL開箱即用。但是,我不建議立即使用它們,除非您已經有了明確的數據增長模型。

根據我的經驗,在大多數情況下很少需要這種技術。我已經使用了幾百兆字節範圍內的表格,其中有數百萬行的表格。當數據變得龐大時,所有這些都是良好索引和精心製作的查詢的問題。

+0

我會認真考慮這一點,似乎每個人都說它會失控,我可以肯定地看到它。感謝大家的意見。 – 2013-05-02 22:20:46

+1

哦,那麼我會選擇日期是我看到的具體日期。 – 2013-05-02 22:22:32

+1

是的,或與範圍等更靈活。不要太擔心技術的理論侷限性。他們比你想象的要遠遠得多:) – 2013-05-02 22:24:52