人在年轻的时候,觉得到处都是人,别人的事就是你的事,到了中年以后,才觉得世界上除了家人已经一无所有了。——王小波《爱你就像爱生命》
1、引言
最近发现老项目中的首页加载速度较慢,发现做主要的原因由于单表数据已经超过百万了,于是考虑通过优化SQL语句和增加索引来提升加载速度。线上库当然不能随意的增加和修改索引测试,但是测试库的数据量较少,测试效果不明显。因此考虑往测试库中增加百万的模拟数据。
2、解决方案
(1)创建存储过程
这里需要注意的是declare语句是在复合语句中声明变量的指令,通过循环插入,达到批量插入的效果。delimiter //其实就是告诉MySQL解释器,该段命令是否已经结束了,mysql是否可以执行了。默认情况下,delimiter是分号;。在这里修改为 // 符号结束。
delimiter //
create procedure batchInsert()
begin
declare num int;
set num=1;
while num<=1000000 do
insert into user(`username`,
`password`) values(concat('测试用户', num),
'123456');
set num=num+1;
end while;
end
//
delimiter ; #恢复;表示结束
(2)调用存储过程
写好了存储过程就可以进行调用了,可以通过命令调用:
CALL batchInsert;
也可以在数据库工具的中Functions的栏目下,找到刚刚创建的存储过程直接执行。
(3)删除存储过程
drop procedure batchInsert;