日期:2014-05-16  浏览次数:20695 次

数据库插入效率太低,怎么优化?
创建表
CREATE TABLE `t` (
  `Id` int NOT NULL default '0',
  `String` varchar(20) default NULL,
  `datetime` datetime default NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

创建存储过程:
CREATE PROCEDURE p ()
BEGIN
DECLARE v INT;
SET v = 0;
WHILE v < 100000 DO
insert into t (id,String,datetime) values (v,'aaa',now());
SET v = v + 1;
END WHILE;
END; 

执行存储过程:call p();

50分钟过去了,才插入了3万多条记录。
这是怎么回事呢?那里该优化下?

------解决方案--------------------
ID设为自增如何,按ID建立索引,有没有其它用户连接MYSQL?
------解决方案--------------------
默认是一条记录一个transaction, 所以比较慢
所以前面
CREATE PROCEDURE p () 
BEGIN 
DECLARE v INT; 
SET v = 0; 
--加transaction
begin transaction;
WHILE v < 100000 DO 
insert into t (id,String,datetime) values (v,'aaa',now()); 
SET v = v + 1; 
END WHILE; 
commit;
END;