自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

效率提升16800倍的連續(xù)整數(shù)生成方法

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
性能提升的原因在于方法1需要執(zhí)行20W次insert,而方法2是按照2的指數(shù)級(jí)插入,20W數(shù)據(jù)只需要不到20次的插入即可完成。

很多時(shí)候需要用到連續(xù)的id進(jìn)行數(shù)據(jù)對(duì)比,如判斷是否連續(xù)等問(wèn)題。那么,生成連續(xù)整數(shù)的方式有多種,首先容易想到的是逐步循環(huán),如果想生成1kw條記錄,則需要循環(huán)1kw次進(jìn)行插入,那么有沒(méi)有其他方式呢,效率相對(duì)于逐步加一有多少提升呢。帶此疑問(wèn),我們進(jìn)行一番測(cè)試。

提前創(chuàng)建一張存放記錄的表。

CREATE TABLE nums(id INT);

1、使用逐步+1遞增的循環(huán)方式

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數(shù)據(jù)用時(shí)達(dá)到14min,不是一般的慢。

2、 二的N次方法插入

此方法借鑒于姜老師的書(shū)上,不過(guò)對(duì)此進(jì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 ;

相同的數(shù)據(jù)庫(kù)下,本次只需要0.05s,感興趣的小伙伴可以親自測(cè)一下。

Tips:

性能提升的原因在于方法1需要執(zhí)行20W次insert,而方法2是按照2的指數(shù)級(jí)插入,20W數(shù)據(jù)只需要不到20次的插入即可完成。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2009-06-16 11:13:38

Javadoc生成方法Javadoc

2023-06-27 13:49:00

GPU通信RLHF

2013-02-22 09:36:32

ImpalaHadoop大數(shù)據(jù)Cloudera

2018-01-19 09:00:37

2022-10-28 15:16:52

檢測(cè)數(shù)據(jù)

2024-06-27 11:22:34

2023-12-01 15:54:44

2009-06-22 14:57:09

2017-12-06 08:06:47

IBMGPU機(jī)器學(xué)習(xí)

2019-12-09 10:32:36

開(kāi)源技術(shù) 趨勢(shì)

2024-04-01 13:08:24

唯一IDC#后端

2022-12-13 08:45:01

3F傾聽(tīng)模型

2012-11-21 17:35:21

Oracle技術(shù)嘉年華

2020-11-02 16:20:07

GuavaJava編程語(yǔ)言

2022-05-10 09:40:26

運(yùn)維游戲實(shí)踐

2016-11-29 09:12:21

數(shù)據(jù)庫(kù)分布式ID

2009-09-28 11:01:48

2023-02-06 07:17:22

2020-10-12 19:03:40

Chrome功能瀏覽器

2020-07-08 17:06:00

Python開(kāi)發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)