我是否必须删除主键或重新加载表数据以在MySQL InnoDB中进行分区?

我是否必须删除主键或重新加载表数据以在MySQL InnoDB中进行分区?,mysql,innodb,database-performance,database-partitioning,pruning,Mysql,Innodb,Database Performance,Database Partitioning,Pruning,我必须按日期范围划分几个表。我必须删除主数据还是重新加载完整数据才能对这些表进行分区 有些表包含的行数确实远远超过5000万行 alter table temp_table_test1 partition by range (unix_timestamp(created_at)) ( partition p01 values less than (unix_timestamp('2015-02-01')), partition p02 values less than (unix

我必须按日期范围划分几个表。我必须删除主数据还是重新加载完整数据才能对这些表进行分区

有些表包含的行数确实远远超过5000万行

alter table temp_table_test1
partition by range (unix_timestamp(created_at))
(
    partition p01 values less than (unix_timestamp('2015-02-01')),
    partition p02 values less than (unix_timestamp('2015-02-01')),
    partition p03 values less than (unix_timestamp('2015-02-01')),
    partition p04 values less than (unix_timestamp('2015-02-01')),
    partition p02 values less than (maxvalue)
);

这就是我正在使用的脚本。

如果还没有分区,则无需执行任何操作。根据这一点,将自动完成:

您可以使用ALTERTABLE向表中添加分区,请保留 请注意,这实际上会创建新的分区表 首先,复制所有现有数据,最后删除旧数据 未分区的表。因此,此操作可能需要一段时间,并且将继续 临时使用两倍的磁盘空间(在InnoDB的情况下是 未返回到操作系统…)


我正要发布这个问题的答案。知道了!