日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
效率提升16800倍的連續(xù)整數(shù)生成方法

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

此方法借鑒于姜老師的書上,不過對(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ù)庫下,本次只需要0.05s,感興趣的小伙伴可以親自測(cè)一下。

Tips:

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


本文名稱:效率提升16800倍的連續(xù)整數(shù)生成方法
分享路徑:http://www.dlmjj.cn/article/dpiogoh.html