在mysql中使用相同的字段从多个表中检索数据

时间:2014-01-29 11:25:54

标签: mysql

我有表“ABC_history”,它存储有数百万条记录的历史,
所以我想创建像白色和年份明智的表

ABC_history_January_2012
ABC_history_February_2012 
ABC_history_march_2012
.
.
.
ABC_history_December_2012

我想使用条件日期为between "2012-01-15" and "2012-02-15"来获取数据, 如何使用单个查询实现此目的,还是有其他方法来存储大数据?

希望在postgreSQL中实现相同的继承概念。例如,参考Best way to store huge log data

1 个答案:

答案 0 :(得分:3)

您的数据结构很差。不幸的是,进行通用查询的唯一方法是将union all表组合在一起:

select *
from ((select * from ABC_history_January_2012) union all
      (select * from ABC_history_February_2012) union all 
      (select * from ABC_history_march_2012) union all
      . . .
      (select * from ABC_history_December_2012)
     ) abch
where date is between '2012-01-15' and '2012-02-15';

非常昂贵的查询。

你想要的是表格分区。这允许您将一个表存储在多个“部件”中。每个部分将由日期范围确定。然后,使用该日期的任何查询只会读取所需的数据。您可以阅读有关表分区here的更多信息。