-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 万条记录我们如何实现它?有什么事情可以只使用 mysql Query 来完成,或者我们可以用 PHP 构建 SQL 查询吗?我想知道从动态创建的多个表中获取数据的最佳方法是什么,或者更改数据库设计本身是否更好?

谢谢大家

4

2 回答 2

1

最好将数据库设计更改为具有月/年列。你现有的系统是一个糟糕的设计。

也许类似这样的设计:

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`)
)

当您现在使用它们时,月份等于 mm,年份等于 yy。

于 2013-07-17T07:45:26.060 回答
0

对于这样的数据量,您可能需要一个比 mysql 性能稍高的数据库。我建议看看http://www.postgresql.org。我有一个正在运行的集合,每个月在一张表中收集 50 到 8000 万条记录,并对该表的每月子集进行查询。还可以看看http://www.postgresql.org/docs/9.2/static/ddl-inherit.html。它可以帮助您使数据库设计正常工作。

于 2013-07-17T07:50:43.997 回答