我有灯服务器,具有快速存储和大量的内存和处理器的能力。
有两个具有相同结构的表,一个有30.000.000个记录,另一个是空的。我希望将数据从第一个表复制到第二个表,并使用以下请求:
INSERT INTO table2 SELECT * FROM table1 ;这个请求需要超过4个小时才能完成。我认为这是不正常的,因为mysqldump of entire database finishes less then hour。
SELECT请求有任何限制吗?或者我必须使用其他代码来optimize performance
发布于 2012-10-01 12:14:08
确保模式与第一个表一样,然后在插入查询中给出值的顺序。*降低了Select 的性能,NoLock提高了数据可用性
喜欢,
Begin Tran
INSERT INTO (Col1,Col2, Col3,...Coln) table2
SELECT (Col1,Col2, Col3,...Coln) FROM table1 with (NoLock)
Commit发布于 2012-10-01 12:10:03
这可能要归功于诸如索引数据和分配存储空间之类的内务管理任务。
发布于 2012-10-01 12:11:50
3000万是很多。您以位为单位进行查询,就像每次查询中的100 - 1000结果一样。
或
我建议您在操作区使用phpmyadmin (选择源表1),您将看到复制表。
或
如果要跨不同位置进行复制,请使用mysqlworkbench在新表中进行导出和导入。希望这能有所帮助。
https://stackoverflow.com/questions/12672858
复制相似问题