在mysql学习和练习中,特别是学习索引及性能调优时,需要生成一张或几张大表来进行测试,能给初学者更直观的学习和更深刻的印象

一、生成脚本
以下使用存储过程批量生成包含用户名,手机号,出生日期等字段大表。
该存储过程使用基于uid作为主键,因此会生成少量重复手机号码,后面有滤重SQL脚本。
如果想一次性生成不重复手机号码,可以考虑修改以下脚本,去掉uid,基于mobile列作为主键

DROP TABLE IF EXISTS big_table;
DROP PROCEDURE IF EXISTS prc_gen_user;CREATE TABLE `big_table` (`uid` int(11) NOT NULL AUTO_INCREMENT,`mobile` char(11) DEFAULT NULL,`passwd` varchar(50) DEFAULT NULL,`name` varchar(50) DEFAULT NULL,`sex` tinyint DEFAULT NULL,`birthday` datetime DEFAULT NULL,`updated_time` datetime DEFAULT NULL,PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE PROCEDURE prc_gen_user(l_cnt int)
BEGINDECLARE x INT DEFAULT 0;DECLARE p char(11);WHILE x < l_cntDOSET x = x + 1;SET p =concat('1',substring(cast(3 + (rand() * 10) % 7 AS char(50)), 1, 1),right(left(trim(cast(rand() AS char(50))), 11), 9));INSERT INTO big_table(mobile,passwd,name,sex,birthday,updated_time)VALUES (p,md5(ceiling(rand() * 1000000)),concat(substring('赵钱孙李周吴郑王冯陈诸卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮齐康伍余元卜顾孟平黄和穆萧尹姚邵堪汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董粱杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯咎管卢莫经房裘干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚',floor(1 + 190 * rand()),1),substring('明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',floor(1 + 400 * rand()),1),substring('明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',floor(1 + 400 * rand()),1)),ceiling(rand() * 10) % 2,date(now()- INTERVAL (20 + ceiling(rand() * 100) % 40) YEAR),concat('2018-',1 + ceiling(rand() * 100) % 12,'-',1 + ceiling(rand() * 100) % 28))ON DUPLICATE KEY UPDATE updated_time = now();END WHILE;
END

二、数据填充,这里插入500万条记录
call prc_gen_user(5000000);

三、滤重SQL语句

DELETE FROM big_table
WHERE mobile IN (SELECT mobileFROM (SELECT u1.mobileFROM big_table u1GROUP BY u1.mobileHAVING count(*) > 1) a)AND uid NOT IN (SELECT uidFROM (SELECT min(u2.uid) AS uidFROM big_table u2GROUP BY u2.mobileHAVING count(*) > 1) b);

四、新建和删除索引
alter table big_table add index index_mo_name(mobile,name);
drop index index_mo_name on big_table;

文章引用下面的链接并在此基础上做了少量修改:
https://blog.csdn.net/leshami/article/details/84348477

MySQL数据库自动生成大批量数据相关推荐

  1. gorm存指针数据_gormt: gormt 是一个数据库映射工具,可以将 mysql 数据库自动生成 golang sturct 结构...

    mysql数据库转 struct 工具,可以将mysql数据库自动生成golang sturct结构,带大驼峰命名规则.带json标签 交互界面模式 ./gormt -g=true 命令行模式 ./g ...

  2. mysql php 新手卡生成_PHPMaker(基于MYSQL数据库自动生成PHP 脚本的软件)

    PHPMaker 注册版是一款PHP代码自动生成工具,一款在Windows平台上运行的基于MYSQL数据库自动生成PHP脚本的软件.使用生成的PHP代码,你可以通过WEB网页 对数据库的记录进行浏览. ...

  3. 五.获得MYSQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  4. javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  5. mysql数据库生成脚本工具下载_PHPMaker下载-基于MYSQL数据库自动生成PHP脚本的软件 v2019.0.2.2 官方版 - 安下载...

    PHPMaker是一款功能强大的自动化工具,可以从MySQL,PostgreSQL,Microsoft Access,Microsoft SQL Server,Oracle和SQLite数据库快速生成 ...

  6. vbs创建mysql数据库_vbs生成ACCESS数据里所有表的字段

    vbs生成ACCESS数据里所有表的字段 更新时间:2008年06月25日 08:38:32   作者: 生成ACCESS数据库里所有表及所有字段并生成一定格式的字符组合 databasename = ...

  7. mysql数据库自动生成数据库开发设计文档

    1.输出表结果,表结构可自己通过代码调整,简单但是有时候很实用,可以节省大量的时间,主要思路: a 在java代码中,通过数据库查询语句获取所有表名和表名备注信息. b 通过表名获取某张表的所有字段说 ...

  8. mysql存储过程自动生成周次数据

    mysql存储过程自动生成周次数据 1.目的 因项目特殊要求,需按周生成对应批次数据,如周次跨月需要生成两条数据:生成的对应字段如下: 2.步骤: 2.1.创建数据库表 在这里插入代码片 ```CRE ...

  9. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

最新文章

  1. [WCF] - Odata Service 访问失败,查看具体错误信息的方法
  2. 机房管理系列之文件服务器管理
  3. 用c语言链表编写便利店零售系统,链表实现多项式求和(C语言)
  4. 老黄历接口(免注册)
  5. ADSL拨号中出现的错误代码
  6. phpexcel的使用方法详细介绍
  7. SQL - 通过某个字段名称找到数据库中对应的表
  8. VMWare 虚拟机中安装 CentOS 7
  9. 你竟然在公钥中下毒!——如何在RSA公钥中添加后门
  10. 诛仙单机java数据库_诛仙2单机11职业架设教程
  11. 微星MSI电脑(GL63 8RE-416CN)打开BIOS隐藏的高级设置方法
  12. Servlet是什么?有什么用?
  13. 共享图书管理系统数据库实现
  14. VLANTRUNK本征VLAN
  15. 事务四大特性(ACID):原子性、一致性、隔离性、持久性
  16. 房屋建筑资质(三级建筑资质费用)
  17. 按日期循环执行impala sql脚本
  18. 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别
  19. 微服务链路追踪之zipkin搭建
  20. 嵌入式Linux(二)汇编LED驱动实验

热门文章

  1. java加载中文词向量_Chinese Word Vectors:目前最全的中文预训练词向量集合
  2. 论文笔记 - Q-Leach:用于无线传感器网络的基于节能群集的路由协议
  3. IT世界里的“国境线”(芯片与算法篇)
  4. SpringBoot全局异常处理及前端请求参数校验
  5. 在mac上安装hadoop伪分布式
  6. python官网下载步骤图解-如何下载安装python 看完你就知道了
  7. c语言图标电脑版,中国国家基本地形图查询软件
  8. 【解析电脑为何要装驱动精灵】
  9. Matlab FIS编辑器基本操作
  10. CAN光端机解决泰和安TX3016C消防主机长距离联网问题