创建表
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万多条记录。
这是怎么回事呢?那里该优化下?
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万多条记录。
这是怎么回事呢?那里该优化下?
解决方案 »
- 如何写这个脚本?
- MYSQL存储过程如何调试,请教高手
- 一个查询语句的sql 的mysqldump 如何 做
- 请教几个与MySQL相关驱动有关的问题
- 关于触发器的一个问题。。
- MySQL中中文表名及字段的奇怪问题!
- www.help2u.org 本地下载mysql 4.0.14
- 小的是MySQL盲,最近要做一项目,要用C语言来访问MySQL数据库,请问MySQL是否提供这样一来的C程序访问接口?
- http://www.pdfan.com/ 欢迎各位指点指点我做的这个网页,不过里面就一张页面,实在找不到可以免费提供php和mysql空间的地方。
- mysql数据库物理文件夹删除,再建立同样的数据库,显示库中的某个表已经存在而建立失败
- 传参存储过程
- array value must start with "{" or dimension information
所以前面
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;
我的把begin transaction;
改为start transaction才能建立存储过程。用这个方法,插入10万条数据只花了3.48秒!
谢谢。