文章插图
很多时候需要用到连续的id进行数据对比,如判断是否连续等问题 。那么,生成连续整数的方式有多种,首先容易想到的是逐步循环,如果想生成1kw条记录,则需要循环1kw次进行插入,那么有没有其他方式呢,效率相对于逐步加一有多少提升呢 。带此疑问,我们进行一番测试 。
提前创建一张存放记录的表 。
【效率提升16800倍的连续整数生成方法】
CREATE TABLE nums(id INT);
1、使用逐步+1递增的循环方式DELIMITER $$CREATE PROCEDUREsp_createNum1 (cnt INT) BEGINDECLARE i INT DEFAULT 1 ;TRUNCATE TABLE nums ;WHILEi <= cnt DOBEGININSERT INTO numsSELECTi;SET i = i+1 ;END ;END WHILE ;END $$DELIMITER ;
生成20W数据用时达到14min,不是一般的慢 。文章插图
2、 二的N次方法插入此方法借鉴于姜老师的书上,不过对此进行了改造,解决输入值与最终获得的记录不一致的情况 。
DELIMITER $$CREATEPROCEDURE `sp_createNum`(cnt INT )BEGINDECLARE i INTDEFAULT 1;TRUNCATE TABLE nums;INSERT INTO nums SELECT i;WHILE i < cnt DOBEGININSERT 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次的插入即可完成 。
推荐阅读
- 效率计算公式初三。热机效率的计算公式是什么?
- 抖音上有哪些广告投放类型?提升曝光助力营销
- 碎片化娱乐提升幸福感正方 碎片化时代
- 建筑吊篮提升机 高处作业吊篮
- 工人|工厂招工“爆”满,工人技能提升刻不容缓
- 如何提高百度指数 百度指数提升软件
- 上古卷轴5提升技能经验代码 乌木锭代码
- 求职|研究生真的遍地都是吗?提升学历有必要吗?学历真相是什么?
- 如何提升HTTPS访问速度?网站HTTPS性能优化技巧
- 工作效率公式 工作效率