【发布时间】:2022-01-05 23:47:55
【问题描述】:
我在自己的计算机 (Win10) 上有一个相当大的 MySQL 表 (~600G),结构如下。
id var1 var2 var3
a val1 1 5
b val1 2 6
c var2 3 7
d var2 4 8
id 和 var1 都已编入索引。我想根据 var1 的值将该表拆分为几个子表。也就是说,
表table_var1:
id var1 var2 var3
a val1 1 5
b val1 2 6
对于表'table_var2':
id var1 var2 var3
c val2 3 7
d val2 4 8
我使用了以下代码
CREATE TABLE table_var1 LIKE original_table;
INSERT INTO table_var1 SELECT * FROM original_table where var1=val1;
CREATE TABLE table_var2 LIKE original_table;
INSERT INTO table_var2 SELECT * FROM original_table where var1=val2;
我的问题与this 非常相似。我想加快拆分表的速度,但是由于数据库在我自己的计算机上,如果我没记错的话,partition 并没有真正的帮助(当有多个物理硬盘可用时,这更有帮助?)。
有没有提高分表性能的建议?
【问题讨论】:
-
为什么要拆分表?我想不出这样做的充分理由
-
您遇到的实际问题是什么?
-
@ysth 我需要加快拆分速度。我需要对某些列进行进一步处理(例如,基于 var2 或 var3 为表创建更多列),但是,对于不同的 var1 值,操作会有所不同,因此,我想将此表拆分为子表和对子表分别执行这些操作。
-
不,您希望通过拆分解决什么问题?一般来说,子表是一个糟糕的主意,会让很多事情变得更麻烦
-
什么版本的 MySQL?
标签: mysql split mysql-workbench table-splitting