从mysql中具有相同字段的多个表中检索数据

从mysql中具有相同字段的多个表中检索数据,mysql,Mysql,我有一个表“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中实现

我有一个表“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中实现相同的继承概念。请参阅示例

您的数据结构很差。不幸的是,执行一般查询的唯一方法是将所有表合并在一起:

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';
非常昂贵的查询


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

您的数据结构很差。不幸的是,执行一般查询的唯一方法是将所有表合并在一起:

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';
非常昂贵的查询


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

您的数据结构很差。不幸的是,执行一般查询的唯一方法是将所有表合并在一起:

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';
非常昂贵的查询


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

您的数据结构很差。不幸的是,执行一般查询的唯一方法是将所有表合并在一起:

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';
非常昂贵的查询


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

如果这些表的架构相同,则它们不应作为单独的实体存在。按月移植的原因是什么?单个表的记录数较少这不是原因。设置适当的索引。如果这些表的架构相同,则它们不应作为单独的实体存在。按月移植的原因是什么?单个表的记录数较少这不是原因。设置适当的索引。如果这些表的架构相同,则它们不应作为单独的实体存在。按月移植的原因是什么?单个表的记录数较少这不是原因。设置适当的索引。如果这些表的架构相同,则它们不应作为单独的实体存在。按月移植的原因是什么?单个表的记录数较少这不是原因。设置适当的索引。