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

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秒查询完毕

 

posted @ 2019-05-31 15:59  v字bo  阅读(582)  评论(0编辑  收藏  举报