mysql 添加大量測試數據


mysql 添加大量測試數據

場景

針對於大量測試數據插入,檢測sql執行速度

第一步:建表

// 測試表
CREATE TABLE user (
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 PROCEDURE insert_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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM