如何存下40亿个不重复数字?作为一名数据工作者,你会如何设计表模型呢,带着这个问题我们一起来探索最佳方案。
常见数据类型
在深入理解这个问题之前,我们需要先回忆一下几个基础知识。
1 bit(比特) = 1个2进制数
1 byte(字节) = 8个2进制数 = 8 bit
基于上述知识,我们就可以理解数据库中数据类型的存储大小和取值范围了。
| 名称 | 存储大小 | 取值范围 |
|---|---|---|
| SMALLINT | 2字节 | -32768 ~ +32767 |
| INTEGER(别名INT或INT4) | 4字节 | -2147483648~+2147483647 |
| BIGINT(别名INT8) | 8字节 | -9223372036854775808~+9223372036854775807 |
从上表我们可以看出,40亿这个数字已经超出了INTEGER类型的最大范围,所以只能选择BIGINT类型。
采用数据表行存储
最简单粗暴的方式,创建一张数据表只有一个字段,生成40亿个不重复的数字并循环写入数据表,一个数字作为一条记录。

上表给出了10的各个数量级下数据表的大小趋势图,当测试数字量达到100万时,数据

最低0.47元/天 解锁文章
393

被折叠的 条评论
为什么被折叠?



