相信大家有的时候测sql性能的时候需要批量造数据,一条条插入插入插到累死也不可能插完,所以现在存储过程就可以帮我们大忙了:

创建表的结构sql语句:

CREATE TABLE `recon_trade_auth_order` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `trade_order_no` varchar(30) NOT NULL COMMENT '交易认证订单号',
  `mer_order_no` varchar(64) NOT NULL COMMENT '商户交易认证订单号',
  `mer_no` varchar(64) DEFAULT NULL COMMENT '商户号',
  `mer_name` varchar(64) DEFAULT NULL COMMENT '商户名称',
  `pro_no` varchar(32) DEFAULT NULL COMMENT '产品编码',
  `pro_name` varchar(64) DEFAULT NULL COMMENT '产品名称',
  `order_time` datetime DEFAULT NULL COMMENT '交易时间',
  `auth_status` tinyint(4) DEFAULT NULL COMMENT '认证状态(1:待认证,2:认证成功,3:认证失败,4:认证未知)',
  `fee_amt` decimal(16,4) DEFAULT NULL COMMENT '费用金额',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `extend1` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
  `extend2` varchar(255) DEFAULT NULL COMMENT '扩展字段2',
  `extend3` varchar(255) DEFAULT NULL COMMENT '扩展字段3',
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_index_1` (`trade_order_no`),
  KEY `index_select_2` (`mer_no`,`pro_no`,`auth_status`),
  KEY `index_select_3` (`mer_order_no`),
  KEY `index_select_4` (`order_time`)
) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COMMENT='认证类交易订单信息';

 

接下来我就需要写造数据的存储过程以及调用存储过程的sql:

delimiter //
DROP PROCEDURE IF EXISTS proc_buildata; 

CREATE PROCEDURE proc_buildata(IN loop_times INT)  
BEGIN  
DECLARE var INT DEFAULT 100;   
WHILE var<loop_times DO  
SET var=var+1;  
INSERT INTO recon_trade_auth_order (
 `id`,
    `trade_order_no`,
    `mer_order_no`,
    `mer_no`,
    `mer_name`,
    `pro_no`,
    `pro_name`,
    `order_time`,
    `auth_status`,
    `fee_amt`,
    `create_time`,
    `update_time`,
    `extend1`,
    `extend2`,
    `extend3`
) VALUES (
        var,
        var+1,
        'yhsy0011',
        'C1100003050700000004',
        '测试商户',
        'P0100000000010',
        '借记卡四要素认证',
        '2017-7-19 15:23:26',
        2,
        NULL,
        '2017-7-5 16:08:00',
        '2017-7-5 16:08:00',
        NULL,
        NULL,
        NULL
);
END WHILE;  
END  //
delimiter; 

CALL proc_buildata(100000); 

 

posted on 2017-07-26 17:04  月亮之城  阅读(2881)  评论(0编辑  收藏  举报