14-mysql优化之使用存储过程向mysql数据库中添加4000000条数据
来源:互联网 发布:只有程序员才懂的笑话 编辑:程序博客网 时间:2024/05/02 07:47
向数据库中插入4000000条数据
①创建dept
#创建表DEPTCREATE TABLE dept( /*部门表*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname VARCHAR(20) NOT NULL DEFAULT "",loc VARCHAR(13) NOT NULL DEFAULT "") ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
②创建表EMP雇员
#创建表EMP雇员CREATE TABLE emp(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/job VARCHAR(9) NOT NULL DEFAULT "",/*工作*/mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/hiredate DATE NOT NULL,/*入职时间*/sal DECIMAL(7,2) NOT NULL,/*薪水*/comm DECIMAL(7,2) NOT NULL,/*红利*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/)ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
#工资级别表CREATE TABLE salgrade(grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,losal DECIMAL(17,2) NOT NULL,hisal DECIMAL(17,2) NOT NULL)ENGINE=MyISAM DEFAULT CHARSET=utf8;
测试数据INSERT INTO salgrade VALUES (1,700,1200);INSERT INTO salgrade VALUES (2,1201,1400);INSERT INTO salgrade VALUES (3,1401,2000);INSERT INTO salgrade VALUES (4,2001,3000);INSERT INTO salgrade VALUES (5,3001,9999);
#定义一个新的命令结束符合delimiter $$
#删除自定的函数drop function rand_string $$
#这里我创建了一个函数. #rand_string(n INT) rand_string 是函数名 (n INT) //该函数接收一个整数create function rand_string(n INT) returns varchar(255) #该函数会返回一个字符串begin #chars_str定义一个变量 chars_str,类型是 varchar(100),默认值'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ'; declare return_str varchar(255) default ''; declare i int default 0; while i < n do set return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1)); set i = i + 1; end while; return return_str; end $$
测试自定义函数
delimiter ;select rand_string(6);
# 随机产生部门编号delimiter $$drop function rand_num $$
#这里我们又自定了一个函数create function rand_num( )returns int(5)begin declare i int default 0; set i = floor(10+rand()*500);return i; end $$
测试
delimiter ;select rand_num();
#******************************************
#向emp表中插入记录(海量的数据)
delimiter $$drop procedure insert_emp $$#随即添加雇员[光标] 400wcreate procedure insert_emp(in start int(10),in max_num int(10))begindeclare i int default 0; #set autocommit =0 把autocommit设置成0 set autocommit = 0; repeat set i = i + 1; insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num()); until i = max_num end repeat; commit; end $$
delimiter ;#调用刚刚写好的函数, 1800000条记录,从100001号开始call insert_emp(100001,4000000);
#**************************************************************
# 向dept表中插入记录
delimiter $$drop procedure insert_dept $$
create procedure insert_dept(in start int(10),in max_num int(10))begindeclare i int default 0; set autocommit = 0; repeat set i = i + 1; insert into dept values ((start+i) ,rand_string(10),rand_string(8)); until i = max_num end repeat; commit; end $$
delimiter ;call insert_dept(100,10);
#------------------------------------------------
#向salgrade 表插入数据
delimiter $$drop procedure insert_salgrade $$create procedure insert_salgrade(in start int(10),in max_num int(10))begindeclare i int default 0; set autocommit = 0; ALTER TABLE emp DISABLE KEYS; repeat set i = i + 1; insert into salgrade values ((start+i) ,(start+i),(start+i)); until i = max_num end repeat; commit; end $$delimiter ;
#测试不需要了#call insert_salgrade(10000,1000000);
查询mysql中查询比较慢的sql语句。
0 0
- 14-mysql优化之使用存储过程向mysql数据库中添加4000000条数据
- 向MySQL中插入1000条测试数据--存储过程
- 利用mysql存储过程向数据库批量插入数据
- 使用存储过程向MySQL批量插入数据
- java 使用jdbc向mysql数据库中插入1亿条数据
- java 使用jdbc向mysql数据库中插入1亿条数据
- MySQL使用存储过程创建100W条数据
- appserv中使用mysql时向数据库中添加数据时报错
- 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
- php向mysql数据库中插入数据(单条和多条)
- 数据存储过程之MySQL与ORACLE数据库的差别
- 数据存储过程之MySQL与ORACLE数据库的差别
- MySql中一个简单的存储过程刷数据库数据
- mysql数据库 向表中添加字段
- 向数据库添加存储过程
- Mysql创建用户表并利用存储过程添加100万条随机用户数据
- mysql 中使用存储过程
- mysql 中使用存储过程
- Objective-C
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- Arcgis 怎样把string类型的数据转为int型
- java调用7zip demo
- Storm里面fieldsGrouping和Field的概念详解
- 14-mysql优化之使用存储过程向mysql数据库中添加4000000条数据
- iOS原生自定义二维码扫描界面(类似微信)
- 三维空间中旋转的表示
- css3-选择器
- 搭建基于"Jenkins"的iOS持续集成环境
- memcache共享session
- Android常用控件(一)
- Windows配置Android环境(eclipse+adt+sdk+genymotion)
- iOS网络编程:六、PostBlock异步