MySQL快速生成大量测试数据(100万、1000万、1亿)

建表

drop table if exists t1;

CREATE TABLE  t1(

  id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment '主键', 

  person_id tinyint not null comment '用户id',

  person_name varchar(30) comment '用户名称',

  gmt_create datetime not null comment '创建时间', 

  gmt_modified datetime comment '修改时间'

) comment '测试表2048条';

插入一条数据

insert into t1 values(1,1,'user_1', NOW(), now());

利用mysql伪列rownum 设置伪列起始点为1

select (@i:=@i+1) as rownum, person_name from t1, (select @i:=100) as init;
image.png
set @i=1;

运行下面的sql

执行20次即2的20次方=1048576 条记录(100万)

执行23次即2的23次方=8388608 条记录(800万)

执行24次即2的24次方=16777216 条记录(1600万)

执行25次即2的25次方=33554432 条记录(3300万)

执行26次即2的26次方=67108864 条记录(6700万)

执行27次即2的27次方=134217728 条记录(1亿3千万)


insert into t1(id, person_id, person_name, gmt_create, gmt_modified) 

select @i:=@i+1,

  left(rand()*10,1) as person_id,

  concat('user_',@i%2048),

  date_add(gmt_create,interval + @i*cast(rand()*100 as signed) SECOND),

  date_add(date_add(gmt_modified,interval +@i*cast(rand()*100 as signed) SECOND), interval + cast(rand()*1000000 as signed) SECOND)

from t1;

image.png

说明

LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。
下面是LEFT()函数的语法 -

LEFT(str,length);
SQL
LEFT()函数接受两个参数:
str是要提取子字符串的字符串。length是一个正整数,指定将从左边返回的字符数

INTERVAL关键字
INTERVAL关键字可以用于计算时间间隔,可以有以下用法。
1,直接计算时间间隔。
例1:查询当前时间之前2个小时的日期:

SELECT NOW()-INTERVAL '2' HOUR;
SELECT
    id,
    percent,
    t_date,
    t_date - INTERVAL 2 HOUR
FROM
    test
where t_date - INTERVAL 2 HOUR>'2020-11-02';
INTERVAL后面的数字可以用数字格式或者字符格式,当时间单位是YEAR_MONTH这种时,必须用字符格式

MySQL DATE_ADD() 函数
定义和用法
DATE_ADD() 函数向日期添加指定的时间间隔。

语法
DATE_ADD(date,INTERVAL expr type)
我们希望向 "OrderDate" 添加 2 天
DATE_ADD(OrderDate,INTERVAL 2 DAY)

CAST函数将任何类型的值转换为具有指定类型的值https://www.yiibai.com/mysql/cast.html
rand()的取值范围为[0,1)
tinyint字段举例unsigned字段的取值范围是0-255,而signed的范围是-128 - 127
SECOND

创建索引

create index idx_person_id on t1(person_id);

create index idx_gmt_create on t1(gmt_create);

create index idx_gmt_modified on t1(gmt_modified);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MySQL 字符串函数 函数描述实例ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。返回 Cust...
    苦海飘摇阅读 3,247评论 0 2
  • 1、数据库介绍篇 1.1什么是数据库 数据库:保存数据的仓库。它体现我们电脑中,就是一个文件系统。然后把数据都保存...
    投石机阅读 4,262评论 0 0
  • MySQL 有很多内置的函数,以下列出了这些函数的说明。 MySQL 字符串函数 函数描述实例ASCII(s)返回...
    knock阅读 2,890评论 0 0
  • MySQL基础操作 创建数据库 创建数据库,该命令的作用: 如果数据库不存在则创建,存在则不创建。 创建RUNOO...
    少年_323a阅读 4,221评论 0 0
  • MySQL基础必知必会 什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每...
    卡斯特梅的雨伞阅读 3,746评论 0 1

友情链接更多精彩内容