MySQL查询速度测试->连接查询

快速生成大量数据

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; 截取字符串的开始是从 15913 ...开始的。floor(rand()*15)的取值范围是0~14#SET head = substring(bodys,starts,3);在字符串bodys中从starts位置截取三位DELIMITER $$CREATE FUNCTION generatePhone() RETURNS varchar(20)BEGINDECLARE 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 utf8mb4DETERMINISTICBEGIN 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

相关文章