快速生成大量数据
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
本文链接:http://task.lmcjl.com/news/18195.html