首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql存储手机号为什么不用bigint?

在使用utf8字符编码的情况下: char(11) 用来存储手机号,会占用11 bytes bigint 用来存储手机号,会占用 8 bytes varchar(11)用来存储手机号,会占用 12...因此,为什么不使用bigint存储手机号呢? 手机号一般是要加索引的吧。。bigint你用了like索引就失效了 1.首先,手机号的本质是字符串而不是数字,只是恰巧长得像数字而已。...5.手机号可能有-(座机),用int存不了。...,觉得好像发现了新大陆,但是不得不将使用bigint存放手机号这个想法给打消;或许下次我应该试试使用int来存储手机号; 不存储区号;如果需要区号,分库或者分表的要求是非常合理的;甚至服务器本身都不会在同一个地区...; 省略手机号开头的1(国内还没有看到1以外的数字开头的手机号,国外情况未知),这样就只剩下10位了,依然不够,第二位从0到9分库分表,还剩下9位,这对于int来说,能够存储了; 我一直认为对于数字的处理

3.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

2021-01-06:mysql中,我存十亿个手机号码...

福哥答案2021-01-06: 答案来自此链接: 首先提出假设: 考虑一下这几个问题: 手机号码都是数字吗? 都是中国的手机号码吗? 会按照手机号等值查询吗? 会按照手机号范围查询吗?...需要手机号列唯一约束吗? 最简单情况(中国手机号,11位数字)就用数值类型bigint存储即可,建索引。...由于手机号不更新,并且不同国家的手机号长度不同,并且可能有特殊字符,字符类型在默认的编码和排序规则下进行范围匹配也能满足我们的需求,所以为了节省空间,使用 varchar 类型。...这样查询某个手机号是否存在这种业务就能更快,因为一张表被划分成了很多张小表。并且如果涉及多张小表 MySQL 还可以多线程并发查,效率提升很多。...如果考虑获取某一号码段的所有手机号,那最好还是按照范围分区,可以使逻辑查询范围更小。但是 hash 分区数据可能比范围分区更加均衡。 注意,对于 HASH 分区个数最好是 2^n。

91710

手机号重复绑定漏洞

0x01 漏洞描述 - 手机号重复绑定漏洞 - 许多网站在用户注册时都会要求用户绑定手机号或者邮箱进行注册,通过绑定的手机号和邮箱常用于用户忘记密码时接收验证码来判断是否本人操作。...一般一个手机号限定绑定一个用户账号,如果一个手机号可同时绑定多个账号,可能造成账户信息泄露、账号身份被盗用的风险。...以下是遇到过的一个案例,此处注册用户绑定手机号时没有对手机号进行短信验证。 先注册第一个ceshi123用户,使用手机号137******41绑定该账号。...在使用ceshi456用户密码找回功能时,此案例中只需要填写用户名和绑定手机号,系统就会返回关于此手机号绑定的所有用户信息。...0x04 漏洞修复 禁止同一手机号可被多个账户绑定,限定一个手机号只能绑定一个账户。

1.3K20
领券