CREATE TABLE `foos` (
`id` int(11) NOT NULL,
`name` char(20),
`bar_id` int(11),
PRIMARY KEY (`id`)
);
CREATE TABLE `bars` (
`id` int(11) NOT NULL,
`name` char(20),
PRIMARY KEY (`id`)
);
delimiter $$
create procedure randomizer()
begin
declare i int Default 0 ;
declare random char(20) ;
myloop: loop
set random=conv(floor(rand() * 99999999999999), 20, 36) ;
insert into `foos` (`id`, `name`, `bar_id`) VALUES (i+1,random,i+1) ;
insert into `bars` (`id`, `name`) VALUES (i+1,random) ;
set i=i+1;
if i=1000000 then
leave myloop;
end if;
end loop myloop;
end $$
delimiter ;
call randomizer();
The results of calling randomizer() are quite different:
| Command | InnoDB | MYSAM |
|---|---|---|
| call randomizer() | 35.5 min | 1.67 min |
InnoDB is much slower. Do you know why?
Please let us know in the comments below.