mysql 添加大量測試數據
場景
針對於大量測試數據插入,檢測sql執行速度
第一步:建表
// 測試表
CREATE TABLEuser
(
id
int(11) NOT NULL AUTO_INCREMENT,
card
varchar(32) DEFAULT NULL COMMENT '編號',
name
varchar(32) DEFAULT NULL COMMENT '姓名',
equipment_id
int(11) DEFAULT NULL COMMENT '設備id',
area_id
int(10) DEFAULT NULL COMMENT '區域ID',
start_time
datetime DEFAULT NULL COMMENT '開始時間',
end_time
datetime DEFAULT NULL COMMENT '結束時間',
ifdel
int(11) DEFAULT '0' COMMENT '0:使用,1:已移除',
PRIMARY KEY (id
)
) ENGINE=MYISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='用戶管理';
注意插入大量數據時建議將引擎設置成 MYISAM,如果表已經建好,可以參考修改引擎
第二步:創建存儲過程
//創建存儲過程,插入數據
CREATE PROCEDUREinsert_data_p
(IN num INT)
BEGIN
DECLARE n INT DEFAULT 1;
WHILE n <= num DO
INSERT INTO user( card, name, equipment_id, area_id, start_time)
VALUES( concat('A',n), concat('li',n), 0, 0, concat('2019-0',floor(8+rand()5),'-0', floor(1+rand()30),' ', floor(10+rand()10),':',floor(10+rand()49),':',floor(10+rand()49)));
set n=n+1;
end while;
UPDATE user SET end_time=DATE_ADD(start_time, INTERVAL rand()60 DAY)
END;
該存儲過程較為簡單,根據傳入的num值,進行循環添加數據。其中涉及到的一些mysql函數,暫不做介紹,之后會專門寫一篇。
第三步:調用存儲過程,添加數據
//插入數據
CALL insert_data_p(1000000);
傳入的數字決定了插入數據庫的條數
第四步:修改引擎
將引擎修改為INNODB
ALTER TABLE
user
ENGINE=INNODB;
如果要插入大量數據,建議先將表引擎修改為:MYISAM,待數據插入完成后再修改回mysql默認引擎:INNODB
ALTER TABLE
user
ENGINE=MYISAM;