第一步: 创建表member
DROP table IF EXISTS member; create table member(
id bigint auto_increment primary key, name varchar(20),
sex tinyint not null default '0'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1
第二步:创建存储过程,插入百万数据
#如果存在已定义的存储过程inserts,
删除掉 drop procedure IF EXISTS inserts;
#自定义结束符
delimiter //
#创建存储过程
create procedure inserts() begin
DECLARE i int; set i = 1;
WHILE(i <= 10000000) DO
insert into member(name,sex) values(concat('name',i),i%2); SET i = i+1; END WHILE; end;
#使用自定义结束符结束存储过程定义 //
#还原结束符为; delimiter
#调用存储过程 call inserts()
生成数据方法2:
CREATE TABLE `tmp_index_merge` (
`id` int(11) NOT NULL,
`key1_part1` int(11) NOT NULL,
`key1_part2` int(11) NOT NULL,
`key2_part1` int(11) NOT NULL,
`key2_part2` int(11) NOT NULL,
`key2_part3` int(11) NOT NULL,
`key3_part1` int(11) NOT NULL DEFAULT '4',
PRIMARY KEY (`id`),
KEY `ind2` (`key2_part1`,`key2_part2`,`key2_part3`),
KEY `ind1` (`key1_part1`,`key1_part2`,`id`),
KEY `ind3` (`key3_part1`,`id`)
) ENGINE=InnoDB;
for i in `seq 1 5000` ; do mysql -vvv -uroot -p123456 -S /tmp/mysql.sock employees \
-e 'insert into tmp_index_merge values (60000*rand(),5000*rand(),\
5000*rand(),5000*rand(),5000*rand(),5000*rand(),2877)'; done
for i in `seq 1 5000` ; do mysql -vvv -uroot -p123456 -S /tmp/mysql.sock employees \
-e 'insert into tmp_index_merge values (600000*rand(),4333,1657,\
5000*rand(),5000*rand(),5000*rand(),5000*rand())'; done
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/91975/viewspace-1760676/
,如需转载,请注明出处,否则将追究法律责任。