应用场景之一: 有时, 我们需要创建表并填充大量测试数据.
方法如下:
我们先来新建一个表, 创建两个普通索引.
- CREATE TABLE IF NOT EXISTS `t` (
- `id` int(11) NOT NULL,
- `a` int(11) DEFAULT NULL,
- `b` int(11) DEFAULT NULL,
- PRIMARY KEY (`id`),
- KEY `a` (`a`),
- KEY `b` (`b`)
- ) ENGINE=InnoDB;
这里我们使用存储过程往表里插入 10w 测试数据, 如果对 MySQL 的存储过程不熟悉, 请看我在代码中的注释, 应该能看得懂得.
- # 定义分割符号, MySQL 默认分割符为分号;, 这里定义为 //
- # 分隔符的作用主要是告诉 MySQL 遇到下一个 // 符号即执行上面这一整段 sql 语句
- delimiter //
- # 创建一个存储过程, 并命名为 testData
- create procedure testData()
- # 下面这段就是表示循环往表里插入 10w 条数据
- begin
- declare i int;
- set i=1;
- while(i<=100000)do
- insert into t values(i, i, i);
- set i=i+1;
- end while;
- end // #这里遇到 // 符号, 即执行上面一整段 sql 语句
- delimiter ; #恢复 MySQL 分隔符为;
- call testData(); #调用存储过程
数据插入完成! 备注: 个人开发机上会需要比较长的时间, 预计 15 分钟左右 [个人电脑]
来源: http://www.linuxidc.com/Linux/2019-08/160323.htm