mysql中快速插入连续数字

这个可以写一个存贮过程,传统想法是写一个循环,然后insert,看了《mysql技术内幕》之后忽然发现还可以这样插入。 这个是利用了INSERT INTO xxx SELECT语句,其实目的就是减少循环插入的次数。 在终端中输入;可以先将语句分隔符换成其他字符。[delimiter] [other char\]

mysql> create procedure createNums(max int unsigned) -> begin -> declare i int unsigned default 1; -> truncate table nums; -> insert into nums select i; -> while i*2<max do -> begin -> insert into nums(a) select a+i from nums; -> set i=i*2; -> end; -> end while; -> delete from nums where a>max; -> end; -> ?

这样算法就变成了 预先插入1 第一次循环插入2 第二次循环插入3,4 第三次 5,6,7,8。这样就减少了插入的次数。最后将多插入的部分干掉。 > mysql> call createNums(100000)? Query OK, 0 rows affected (1.80 sec)

插入10w条数据仅需要1.8秒