MySQL 如何快速插入大量测试数据
简述
开发过程中经常需要测试 SQL 在大量数据集时候的执行效率,这就需要我们在表中插入大量的测试数据,下面介绍如何使用存储过程插入大量的测试数据
定义常用方法
我们要确保生成的测试数据要有足够的随机性,测试结果才会更准确,如果某个字段的测试数据都是一样的,索引的效率会大大折扣,测试结果往往与真实数据的执行结果大相径庭
我们可以使用 MySQL 的自定义函数来实现随机值的生成,下面罗列出几种常见的字段的函数定义
生成随机时间
函数声明:
复制代码
使用示例:
生成 2020-01-01 ~ 2023-01-01 时间段内的随机时间
复制代码
生成中文名
函数声明:
复制代码
使用示例:
复制代码
字符串分割选取
函数声明:
复制代码
使用示例:该函数用于将字符串按照指定的分割符进行分割,并返回分割后的第 n(n 由参数指定) 个字符串,如取字符串”I love MySQL“按空格分割后的第 2 个字符串
复制代码
生成随机手机号
函数声明:
复制代码
使用示例:
复制代码
插入大量测试数据
如下面这张表,现在要插入 10w 的测试数据,我们可以定义一个 MySQL 存储过程,通过存储过程的方式插入数据到表中
表结构
复制代码
存储过程定义
复制代码
调用存储过程
复制代码
在我这边,插入 10w 条数据,只要 52s
延伸
除了使用存储过程的方法插入数据外,还可以通过代码的方式插入数据,但是该方法的执行效率不高,但是改方法的执行效率不高。另外,如果你有 navicat 的话,也可以试试 navicat 的数据生成方案,由于我没有 navicat,就不介绍了,感兴趣的可以看 navicat 的文档
关注公众号:huangxy,一起学习,一起进步
版权声明: 本文为 InfoQ 作者【hungxy】的原创文章。
原文链接:【http://xie.infoq.cn/article/cc32b20526e67bd7d2624ad6f】。文章转载请联系作者。
评论