用一张表解决你批量插入千万条数据的烦恼

在性能测试时,常常需要大量的记录数。 MySQL函数较少,在PostgreSQL中有 generate_series 函数,使用十分方便。在MySQL中如何更加方便的处理,可以生成一个序列号表,专门用于批量操作,插入数据。

-- 创建序列表
CREATE TABLE numserial (
	num INT 
);
-- 插入数据
INSERT INTO numserial(num) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-- 生成0-9999999。
INSERT INTO numserial(num)
SELECT num FROM (
	SELECT (bw.num * 1000000 + sw.num * 100000 + w.num*10000 + q.num*1000 + b.num*100 + s.num*10 + g.num) AS num 
	FROM
		numserial g,numserial s,numserial b,numserial q,numserial w,numserial sw,numserial bw	
) tnum 
WHERE num >= 10
ORDER BY num ASC;

-- 后续可以使用这个序列表,快速生成其他数据
-- SELECT * FROM numserial;

-- 如何使用。 
/*
INSERT INTO store (
	id,storecode,storename,remark
) 
SELECT num, concat('code',num), concat(RAND()*1000000,'name'),left(uuid(),12) FROM numserial WHERE num <= 1000000 and num >= 1;
*/

用一张表解决你批量插入千万条数据的烦恼_第1张图片后续需要插入批量插入测试数据,则可以使用这个序列表。还是很方便的。

-- 通过函数,生成一些有序列,随机数。
SELECT num, concat('code',num), concat(RAND()*1000000,'name'),left(uuid(),12) 
-- 控制数量和范围
FROM numserial WHERE num <= 1000000 and num >= 1;

用一张表解决你批量插入千万条数据的烦恼_第2张图片
一个表能解决的问题,你非要写个存储过程?还不赶紧收藏一下。

你可能感兴趣的:(mysql)