在巨大的MySQL表上INSERT ... SELECT

时间:2016-10-06 13:11:12

标签: mysql select insert bigdata

我已经隔离了MySQL 5.5,内部有一个巨大的表(3.5Tb数据,是的,它只有1个表)。

目标是将该表的一半复制到同一服务器上的另一个表中。如何做得更好更快? :

1)只需" INSERT INTO new_table SELECT * FROM old_table WHERE ..." 。 在这种情况下,MySQL的行为是什么?我希望与MySQL的连接将被超时打破,但是查询本身应该运行直到所有数据都被复制。 或者MySQL会被这样的查询崩溃?

2)使用相同的" INSERT ... SELECT"但是按块选择(例如10000行)。这应该是更安全,但我猜想要慢得多。

最好的方法是什么?提前谢谢!

1 个答案:

答案 0 :(得分:0)

我已经使用过CREATE TABLE AS,看看这对你是否有帮助:

CREATE TABLE ... SELECT Syntax