我有一个表有4000万条记录,我想像这样把这40M复制到80M-
INSERT INTO cdr (id,dataPacketDownLink, dataPacketUpLink,dataPlanEndTime,dataPlanStartTime,dataVolumeDownLink,dataVolumeUpLink,
dataplan,dataplanType, createdOn, deviceName, duration, effectiveDuration, HOUR, eventDate, msisdn, QUARTER, validDays, dataLeft,completedOn,evedate)SELECT null,dataPacketDownLink, dataPacketUpLink,dataPlanEndTime,dataPlanStartTime,dataVolumeDownLink,dataVolumeUpLink,
dataplan,dataplanType, createdOn, deviceName, duration, effectiveDuration, HOUR, eventDate, msisdn, QUARTER, validDays, dataLeft,completedOn,eve_date FROM cdr;
使用这个是正确的还是我应该使用 SELECT INTO OUTFILE 和 LOAD DATA INFILE 来快速插入? 还是有比以上两种更好的方法?
谢谢。
最佳答案
您当前的解决方案相当不错,但如果您的表有很多索引,那可能会减慢速度。索引有利于搜索,但会减慢插入速度。
您可以尝试先删除所有(或大部分)索引,复制所有数据,然后重新创建它们。或者,您可以构建一个没有索引的新表,将所有数据复制到那里,在新表上创建索引,然后删除旧表并重命名新表。
不过,我以前见过这么大的 table 修改需要这么长时间。不幸的是,MySQL 在这些事情上不是很快。
关于mysql - 哪个是快速加载数据 infile 或正常插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20297932/