我的谷歌搜索技能不足以找到解决方案。如果可能,如何将表上的分区单独提升为表?
假设我有part0
,part1
和part2
. 有什么ALTER TABLE
我可以提供的可以转换part0
为新表的吗?
我的想法是,由于数据已经存在于磁盘上的单独文件中,因此创建表的过程可能比使用SELECT
查询创建新表更快。
我的谷歌搜索技能不足以找到解决方案。如果可能,如何将表上的分区单独提升为表?
假设我有part0
,part1
和part2
. 有什么ALTER TABLE
我可以提供的可以转换part0
为新表的吗?
我的想法是,由于数据已经存在于磁盘上的单独文件中,因此创建表的过程可能比使用SELECT
查询创建新表更快。
是的,a
PARTITION
是TABLE
. 但是,将分区转换为表需要一些特殊命令,反之亦然。请参阅“可传输表空间”和 FLUSH TABLES ptable FOR EXPORT;ALTER TABLE ptable 丢弃表空间;ALTER TABLE ptable 导入表空间。MySQL 5.6 和 5.7+ 之间的细节有所不同。
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning有一些讨论技术的地方的链接。
你不需要
SELECT
。这可以通过纯 DDL 来完成。对于这个例子,假设分区表如下:
mydb
mytable
part0
,part1
,part2
)这可能很棘手,但这是可行的
这样做首先是
mynewtable
在所有其他方面都没有任何分区和相同的模式。然后,它用 交换mynewtable
表part0
。如果您不确定这一点,请运行
检查行
mynewtable
和新行part0
并确保mynewtable
有原始数据part0
part0
应该是空的一旦你确定转置工作,然后运行
请在实验室或 sqlfiddle 中进行测试。试试看 !!!