2013-05-02 55 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