zoukankan      html  css  js  c++  java
  • 快速生成100万数据人员信息数据

    在爱学习mysql优化时 我需要大量数据才检测sql语句的效率

    下面给大家模拟一个生成100万人员信息的数据的范例

    创建一个数据库  名为test

    建立表

    create table t(id         bigint not null auto_increment primary key,
             mobile     bigint,
             password   varchar(64),
             username   varchar(64),
             sex        tinyint not null default 1,
             birthday   datetime,
             amount     decimal(18,2), 
             ismaster   bool,
             istest     bit(1), 
             updatetime datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

    编写存储过程

    编写了一个随机编号和随机姓名的sql代码 

    DELIMITER $$
    DROP PROCEDURE IF EXISTS proc_gen_user;
    CREATE PROCEDURE proc_gen_user(l_cnt BIGINT)
    BEGIN
       DECLARE X INT DEFAULT 0;
       DECLARE p CHAR(11);
     
       WHILE X < l_cnt
       DO
          SET 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 t(mobile,PASSWORD,username,sex,birthday,amount,ismaster,istest)
             VALUES (
                       p,
                       MD5(CEILING(RAND() * 1000000)),
                       CONCAT(
                         SUBSTRING(REPLACE('赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张
                              孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎
                              鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤
                              滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄
                              和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞
                              熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危江童颜郭
                              梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯昝管卢莫
                              经房裘缪干解应宗丁宣贲邓郁单杭洪包诸左石崔吉钮龚
                              程嵇邢滑裴陆荣翁荀羊於惠甄曲家封芮羿储靳汲邴糜松
                              井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫
                              宁仇栾暴甘钭厉戎祖武符刘景詹束龙叶幸司韶郜黎蓟薄
                              印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙池乔阴鬱胥能苍双
                              闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍卻璩桑桂濮牛寿通
                              边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容
                              向古易慎戈廖庾终暨居衡步都耿满弘匡国文寇广禄阙东
                              欧殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空
                              曾毋沙乜养鞠须丰巢关蒯相查后荆红游竺权逯盖益桓公',' ',''),
                             FLOOR(1 + 400 * RAND()),1),
                          SUBSTRING(REPLACE(
                             '明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中
                              正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜
                              敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山
                              贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传
                              康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵
                              源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和
                              恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连
                              勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁
                              裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤
                              延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝
                              宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦
                              先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦
                              晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅
                              玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',' ',''),
                             FLOOR(1 + 400 * RAND()),1),
                          SUBSTRING(REPLACE(
                             '明国华建文平志伟东海强晓生光林小民永杰军金健一忠洪江福祥中
                              正振勇耀春大宁亮宇兴宝少剑云学仁涛瑞飞鹏安亚泽世汉达卫利胜
                              敏群波成荣新峰刚家龙德庆斌辉良玉俊立浩天宏子松克清长嘉红山
                              贤阳乐锋智青跃元武广思雄锦威启昌铭维义宗英凯鸿森超坚旭政传
                              康继翔栋仲权奇礼楠炜友年震鑫雷兵万星骏伦绍麟雨行才希彦兆贵
                              源有景升惠臣慧开章润高佳虎根远力进泉茂毅富博霖顺信凡豪树和
                              恩向道川彬柏磊敬书鸣芳培全炳基冠晖京欣廷哲保秋君劲轩帆若连
                              勋祖锡吉崇钧田石奕发洲彪钢运伯满庭申湘皓承梓雪孟其潮冰怀鲁
                              裕翰征谦航士尧标洁城寿枫革纯风化逸腾岳银鹤琳显焕来心凤睿勤
                              延凌昊西羽百捷定琦圣佩麒虹如靖日咏会久昕黎桂玮燕可越彤雁孝
                              宪萌颖艺夏桐月瑜沛诚夫声冬奎扬双坤镇楚水铁喜之迪泰方同滨邦
                              先聪朝善非恒晋汝丹为晨乃秀岩辰洋然厚灿卓杨钰兰怡灵淇美琪亦
                              晶舒菁真涵爽雅爱依静棋宜男蔚芝菲露娜珊雯淑曼萍珠诗璇琴素梅
                              玲蕾艳紫珍丽仪梦倩伊茜妍碧芬儿岚婷菊妮媛莲娟一',' ',''),
                             FLOOR(1 + 400 * RAND()),1)),
                       CEILING(RAND() * 10) % 2,
                       DATE(NOW()- INTERVAL (20 + CEILING(RAND() * 100) % 40) YEAR),
                       ROUND(RAND()*100000,2),
                       CEILING(RAND()*10)%2,
                       CEILING(RAND()*10)%2);     
       END WHILE;
    END$$
    DELIMITER ;

    执行计划

    输入你要生成数据 一下以100万数据为例

     call proc_gen_user(1000000);

    大约1个小时5分 完成!

    接下来查询一下

      

     统计一下(楼主之前插入了1000条 - - !)

      

    索引优化

    我们分析一下查用的sql语句

       

    没有加索引的 一个简单查询0.6秒

    咱们创建一个简单的索引

    create index ix_mobile on t(mobile);
    

  • 相关阅读:
    faster with MyISAM tables than with InnoDB or NDB tables
    w-BIG TABLE 1-toSMALLtable @-toMEMORY
    Indexing and Hashing
    MEMORY Storage Engine MEMORY Tables TEMPORARY TABLE max_heap_table_size
    controlling the variance of request response times and not just worrying about maximizing queries per second
    Variance
    Population Mean
    12.162s 1805.867s
    situations where MyISAM will be faster than InnoDB
    1920.154s 0.309s 30817
  • 原文地址:https://www.cnblogs.com/edda/p/13093738.html
Copyright © 2011-2022 走看看