我有一个表“ABC_history”,它存储了数百万条记录的历史,
所以我想创建像
ABC_history_January_2012
ABC_history_February_2012
ABC_history_march_2012
.
.
.
ABC_history_December_2012
我想使用条件日期在“2012-01-15”和“2012-02-15”之间
获取数据,
我如何使用单一查询 或是否有任何其他方式来存储大数据?
想在 postgreSQL 中实现相同的继承概念。引用例如Best way to store huge log data
最佳答案
你的数据结构很差。不幸的是,进行通用查询的唯一方法是联合所有
表:
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 .
关于mysql - 从mysql中具有相同字段的多个表中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21429667/