【问题标题】:Partition a table in mySQL在 mySQL 中对表进行分区
【发布时间】:2012-02-01 20:37:24
【问题描述】:

有一个包含 300 万行的表,并且想要对它进行分区。有 5 列,其中之一是日期列。我想按日期拆分表格。任何简单的帮助都会很棒。谢谢

【问题讨论】:

标签: php mysql database database-design database-schema


【解决方案1】:

如果我正确理解您的问题,有几种方法可以做到这一点:

您可以使用 Between 关键字按特定日期范围细分。

drop table if exists TableA, TableB;

create table TableA
select * from YourTable
where DateColumn between '2011-07-01' and '2012-02-01';

create table TableB
select * from YourTable
where DateColumn between '2011-01-01' and '2011-06-30';

或者,如果您的细分更简单(例如,您想按年份细分),您可以使用日期函数。

drop table if exists TableA, TableB;

create table TableA
select * from YourTable
where year(DateColumn) = '2011';

create table TableB
select * from YourTable
where year(DateColumn) = '2012';

可能还有更动态的方法可以做到这一点,但我需要了解您的环境和目标的更多细节。

【讨论】:

    【解决方案2】:

    拆分表是什么意思?

    您可以通过执行插入选择并选择现有数据在日期列上执行自我 JOIN GROUP BY 来插入其他表。

    【讨论】:

      【解决方案3】:

      您可以在 MySQL 中使用表分区。步骤是:

      1. 备份您的表。

      2. 从数据库中删除表

      3. 将创建表查询与分区语句一起运行。

        示例:http://dev.mysql.com/tech-resources/articles/partitioning.html

        CREATE TABLE part_tab
        (  
            c1 int default NULL,
            c2 varchar(30) default NULL,
            c3 date default NULL
        ) engine=myisam 
        PARTITION BY RANGE (year(c3)) (PARTITION p0 VALUES LESS THAN (1995),
        PARTITION p1 VALUES LESS THAN (1996) , PARTITION p2 VALUES LESS THAN (1997) ,
        PARTITION p3 VALUES LESS THAN (1998) , PARTITION p4 VALUES LESS THAN (1999) ,
        PARTITION p5 VALUES LESS THAN (2000) , PARTITION p6 VALUES LESS THAN (2001) ,
        PARTITION p7 VALUES LESS THAN (2002) , PARTITION p8 VALUES LESS THAN (2003) ,
        PARTITION p9 VALUES LESS THAN (2004) , PARTITION p10 VALUES LESS THAN (2010),
        PARTITION p11 VALUES LESS THAN MAXVALUE );
        
      4. 现在导入表的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-15
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多