码迷,mamicode.com
首页 > 数据库 > 详细

mysql 快速生成百万条测试数据

时间:2019-05-31 16:22:11      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:charset   RoCE   procedure   sts   round   _id   def   table   delay   

1、生成思路

利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中
 

2、创建内存表及普通表

CREATE TABLE `card` (
   `card_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID‘,
   `card_number` varchar(100) DEFAULT NULL COMMENT ‘卡号‘,
   PRIMARY KEY (`card_id`)
 ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

 

2.创建MYSQL存储过程

DROP PROCEDURE IF EXISTS proc1;
DELIMITER $$
SET AUTOCOMMIT = 0$$
CREATE  PROCEDURE proc1()
BEGIN
DECLARE v_cnt DECIMAL (10)  DEFAULT 0 ;
dd:LOOP
          INSERT  INTO card (card_number) VALUES (UUID());
                  COMMIT;
                    SET v_cnt = v_cnt+1 ;
                           IF  v_cnt = 10000000 THEN LEAVE dd;
                          END IF;
         END LOOP dd ;
END;$$
DELIMITER ;

 3.调用存储过程,生成对应的测试数据

call proc1;

4.来测试一下性能吧。

select * from card order by rand() limit 1;   //6.5秒查询完毕
select * from card where card_number like ‘%xxx%‘; //3.7秒查询完毕

 

mysql 快速生成百万条测试数据

标签:charset   RoCE   procedure   sts   round   _id   def   table   delay   

原文地址:https://www.cnblogs.com/gmin/p/10955709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!