大胆猜测导致插入缓慢的原因应该是MYSQL的自动提交 ,如果批量插入时,建议先暂时关闭自动提交,不然的话会每插入一条记录会自动提交一下,这样会影响插入效率。
如果方便请共享一下表结构和插入SQL脚;
如果方便请共享一下表结构和插入SQL脚;
解决方案 »
- 求教怎么更新带有分号的字段那?
- 请教大侠!:远程连接MYSQL数据库时,如何将库上数据导出到本地硬盘来?
- 求教一个数据类型的问题
- mysql 查询速度超慢,高手怎么看?开始怀疑mysql性能了.....
- mysql奇怪问题,在线等ing
- 能建数据库,可是建表失败???
- 为什么MySQL的root用户的密码为空可以成功连接,设置密码以后即出错?
- *.sql文件应该保存在什么目录下?
- 关于group语法的使用
- MySQL有没有一种机制,当某些数据更新时,通知连接到MySQL的应用程序?
- 不调用mysql_store_result() 只用执行了mysql_query()需要mysq_free_result()吗
- Mysql 行子查询
#Routine body goes here...
DECLARE i INT DEFAULT 0;
set i=1;
WHILE i<10000 DO
INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
set i=i+1;
END WHILE;
END写的sql脚本。里面还有个id是自增字段。
set audo commit 没有开。也就是默认不是自动提交的。
执行了150条。
也就是这样的
explain
INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
如果把表的引擎设置为innoDB,就可以使用事务来设置自动提交的问题。
BEGIN
#Routine body goes here...
DECLARE i INT DEFAULT 0;
set i=1;
START TRANSACTION;
WHILE i<10000 DO
INSERT INTO demo_type(code,NAME) VALUES('你好','nnihao');
set i=i+1;
END WHILE;
COMMIT;
END