问题描述
|
解决方法
不要自动假设您的服务器设置错误。默认设置可能很好。即使在旧机器上,插入10000行也应该是小菜一碟,但这取决于您如何进行插入。
在这里,我将介绍3种插入数据的方法,从慢到快:
如果要插入许多行,则以下操作非常慢:
INSERT INTO mytable (id,name) VALUES (1,\'Wouter\');
INSERT INTO mytable (id,name) VALUES (2,name) VALUES (3,\'Wouter\');
这已经快了很多:
INSERT INTO mytable (id,name) VALUES
(1,\'Wouter\'),(2,(3,\'Wouter\');
(语法错误)
通常这是最快的:
具有如下所示的CSV文件:
1,Wouter
2,Wouter
3,Wouter
然后运行类似
LOAD DATA FROM INFILE \'c:/temp.csv\' INTO TABLE mytable
您使用上述哪种方法?
, 除了提供@Wouter的建议外,您还应该检查索引。如果要插入10k +行,则可能需要在插入过程之前禁用键。不要忘记以后启用密钥。
参考MySql 5.5文档:
可以激活此功能
明确地用于MyISAM表。改变
TABLE ... DISABLE KEYS告诉MySQL
停止更新非唯一索引。改变
TABLE ... ENABLE KEYS然后
用于重新创建丢失的索引。
MySQL通过特殊的方式做到这一点
算法比
一键一插
在执行批量操作之前禁用密钥
插入操作应给
相当大的加速。使用ALTER
TABLE ... DISABLE KEYS需要
INDEX特权...