效率提升16800倍的连续整数生成方法

数据库 其他数据库
性能提升的原因在于方法1需要执行20W次insert,而方法2是按照2的指数级插入,20W数据只需要不到20次的插入即可完成。

很多时候需要用到连续的id进行数据对比,如判断是否连续等问题。那么,生成连续整数的方式有多种,首先容易想到的是逐步循环,如果想生成1kw条记录,则需要循环1kw次进行插入,那么有没有其他方式呢,效率相对于逐步加一有多少提升呢。带此疑问,我们进行一番测试。

提前创建一张存放记录的表。

CREATE TABLE nums(id INT);

1、使用逐步+1递增的循环方式

DELIMITER $$
CREATE PROCEDURE sp_createNum1 (cnt INT)
BEGIN
DECLARE i INT DEFAULT 1 ;
TRUNCATE TABLE nums ;WHILE i <= cnt DO
BEGIN
INSERT INTO nums SELECT i;
SET i = i+1 ;
END ;
END WHILE ;
END $$
DELIMITER ;

生成20W数据用时达到14min,不是一般的慢。

2、 二的N次方法插入

此方法借鉴于姜老师的书上,不过对此进行了改造,解决输入值与最终获得的记录不一致的情况。

DELIMITER $$
CREATE PROCEDURE `sp_createNum`(cnt INT )
BEGIN
DECLARE i INT DEFAULT 1;
TRUNCATE TABLE nums;
INSERT INTO nums SELECT i;
WHILE i < cnt DO
BEGIN
INSERT INTO nums SELECT id + i FROM nums WHERE id + i<=cnt;
SET i = i*2;
END;
END WHILE;
END$$


DELIMITER ;

相同的数据库下,本次只需要0.05s,感兴趣的小伙伴可以亲自测一下。

Tips:

性能提升的原因在于方法1需要执行20W次insert,而方法2是按照2的指数级插入,20W数据只需要不到20次的插入即可完成。

责任编辑:姜华 来源: 今日头条
相关推荐

2009-06-16 11:13:38

Javadoc生成方法Javadoc

2023-06-27 13:49:00

GPU通信RLHF

2013-02-22 09:36:32

ImpalaHadoop大数据Cloudera

2022-10-28 15:16:52

检测数据

2018-01-19 09:00:37

2023-12-01 15:54:44

2024-06-27 11:22:34

2009-06-22 14:57:09

2024-04-01 13:08:24

唯一IDC#后端

2012-11-21 17:35:21

Oracle技术嘉年华

2020-11-02 16:20:07

GuavaJava编程语言

2022-05-10 09:40:26

运维游戏实践

2017-12-06 08:06:47

IBMGPU机器学习

2019-12-09 10:32:36

开源技术 趋势

2022-12-13 08:45:01

3F倾听模型

2009-09-28 11:01:48

2016-11-29 09:12:21

数据库分布式ID

2022-07-15 09:25:01

AI制药

2023-01-16 13:47:59

谷歌模型

2023-02-06 07:17:22

点赞
收藏

51CTO技术栈公众号