我有表“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
答案 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的更多信息。