快速生成大量數據
INSERT INTO tableName1(pn_code,belong_id,factory_number) SELECT pn_code,belong_id,factory_number FROM tableName1
四張表合計4000萬條數據,
如果不帶where,聯查的速度是非常快的,前提是需要帶limit,limit越小越快,
如果聯查后帶where 篩選,速度會非常慢,所以大數據量下,有where根據實際情況,可以分批進行查詢
下面附帶記得函數和存儲過程備用
1.生成隨機數字
#生成n個隨機數字 DELIMITER $$ CREATE FUNCTION randNum(n int) RETURNS VARCHAR(255) BEGIN DECLARE chars_str varchar(20) DEFAULT '0123456789'; DECLARE return_str varchar(255) DEFAULT ''; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1)); SET i = i +1; END WHILE; RETURN return_str; END $$ DELIMITER;
2.生成手機號碼
#生成隨機手機號碼 # 定義常用的手機頭 130 131 132 133 134 135 136 137 138 139 186 187 189 151 157 #SET starts = 1+floor(rand()*15)*4; 截取字符串的開始是從 1、5、9、13 ...開始的。floor(rand()*15)的取值范圍是0~14 #SET head = substring(bodys,starts,3);在字符串bodys中從starts位置截取三位 DELIMITER $$ CREATE FUNCTION generatePhone() RETURNS varchar(20) BEGIN DECLARE head char(3); DECLARE phone varchar(20); DECLARE bodys varchar(100) default "130 131 132 133 134 135 136 137 138 139 186 187 189 151 157"; DECLARE starts int; SET starts = 1+floor(rand()*15)*4; SET head = trim(substring(bodys,starts,3)); SET phone = trim(concat(head,randNum(8))); RETURN phone; END $$ DELIMITER ;
3.生成隨機字符串
#創建隨機字符串和隨機時間的函數 DELIMITER $$ CREATE FUNCTION `randStr`(n INT) RETURNS varchar(255) CHARSET utf8mb4 DETERMINISTIC BEGIN DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; DECLARE return_str varchar(255) DEFAULT '' ; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str, substring(chars_str, FLOOR(1 + RAND() * 62), 1)); SET i = i + 1; END WHILE; RETURN return_str; END$$ DELIMITER;
CSDN:https://blog.csdn.net/wuzhangweiss/article/details/101156910