我想从动态创建的表中选择行,即我们有类似web_analytics_mm_yy的表(例如:web_analytics_06_13、web_analystics_05_13、web_analytics s_04_13等)
- web_analytics->所有表的通用名称
- mm_yy->month_year(将由cron每月创建)
我需要从所有的表中获取记录,我们每个表中有大约100万条记录。我们如何获取它?有什么事情可以只使用mysql查询完成,或者我们可以用PHP构建SQL查询吗?我想知道从动态创建的多个表中提取数据的最佳方法是什么?还是改变DB设计本身更好?
Thx ppl
最好将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`)
)
其中月份等于mm,年份等于yy,正如您现在使用的那样。
对于这么多的数据,您可能想要一个比mysql性能稍高的数据库。我建议你看看http://www.postgresql.org.我有一个每月在一个表中运行5000万到8000万条记录的集合,并对该表的每月子集进行查询。还可以看看http://www.postgresql.org/docs/9.2/static/ddl-inherit.html它可以帮助你进行数据库设计。