2013-07-17 87 views
-1

获取我想从动态创建的表中选择行,即我们有像web_analytics_mm_yy表(例如:web_analytics_06_13,web_analytics_05_13,web_analytics_04_13等)
数据从动态创建的表

  • web_analytics - >通用名称的所有表
  • mm_yy - > MONTH_YEAR(每个月会由cron创建)

我需要从所有表读取记录,我们有像100万条记录每一个表,我们怎样才能acheive呢? 是否有任何事情可以使用MySQL Query来完成,或者我们可以在PHP中构建SQL查询? 我想知道什么是从多个表中获取动态创建数据的最佳方法还是更好地更改数据库设计本身?

THX PPL

+2

你为什么要把你的数据放在单独的表中。只需添加一个表示月份的字段。 – Roebie

回答

1

这将是更好的改变DB设计有月/年的一列。你所使用的系统是一个糟糕的设计。

也许类似这样的设计:

CREATE TABLE IF NOT EXISTS `web_analytics` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`some_data_colum1` varchar(25) NOT NULL, 
`some_data_colum2` varchar(25) NOT NULL, 
`month` varchar(2) NOT NULL, 
`year` varchar(2) 
PRIMARY KEY (`id`) 
) 

其中一个月等于毫米和你现在使用他们的一年相当于YY。

+0

请问我可以如何重新设计现有的数据库结构?另外我认为我们不能按照我们现有的系统将它列为明智的 –

+0

已经回答了两次:为月/年添加一列并阅读Postgresql的表继承。 – Roebie

+0

很酷使用Table分区更好吗?因为每个月我们都会插入一百万条记录。我想知道一年之后会发生什么,比如我的数据库表中有10亿条记录,性能会很慢。所以最好分开表格? –

0

你可能需要一个比mysql多一倍的数据库。我建议看看http://www.postgresql.org。我有一个表中每月运行一个集合5千万到8千万条记录,并在每个表的子集上进行查询。 同时您也可以看看http://www.postgresql.org/docs/9.2/static/ddl-inherit.html。它可以帮助您实现数据库设计。

+0

很酷使用Table分区会更好吗?因为每个月我们都会插入一百万条记录。我想知道一年之后会发生什么,比如我的数据库表中有10亿条记录,性能会很慢。所以最好分开表格? –