MySQL根据某张表复制新表

InnoDB一棵B+树,可以存放多少行数据中,探讨了在B+数深度为3的前提下, mysql单表的数据上限:

如果单条记录大小为1k,能存1170*1170*16=21902400行数据. 实践中,可能单条记录会小于1k,从而单表上限可以稍稍增大,但一般也不超过5000万.


当某张表数据过大,就需要考虑从业务上进行分表,即将原来的单表a,拆成n张(如拆成100张a_00,a_01…a_99), 再根据业务的某项标识(如用户的uid),在代码中先决定写或读落到哪张表.


在单表扩容过程中,如下几条sql,将很有用处:


复制一张新的user表,命名为user6. 仅复制表结构,不复制表数据

1
create table user6 like user 

1
create table user6 select * from user where 1=2

如果去掉where条件,即

1
create table user6 select * from user 

则将会连原来user表的数据一同复制



将某张表(user)的数据,复制写入另一张新表(user5)


1
INSERT INTO user5 SELECT * FROM user;

文章目录