为什么很多公司要求 mysql 表主键 id 必须是 long 型?

2016-06-25 19:13:22 +08:00
 eightqueen
int 型已经很大了,有 20 多亿,像用户表用 int 就足够了,用 long 不是浪费吗?
30361 次点击
所在节点    MySQL
51 条回复
wy315700
2016-06-25 19:13:45 +08:00
short_uuid
sudoz
2016-06-25 20:30:22 +08:00
万一最大了呢?
colatin
2016-06-25 20:58:37 +08:00
按我说,应该用 varchar
ins
2016-06-25 21:03:03 +08:00
他们是想很长远之后的 需求和省事所以都选 long 型
Livid
2016-06-25 21:03:17 +08:00
如果应用支持第三方登录,或者只使用第三方登录,那么第三方的 User ID 有可能是 64 位的。虽然自己的应用不一定能增长到超过 32 位,但是第三方很可能是 64 位的。
iyaozhen
2016-06-25 21:28:36 +08:00
还是有一定道理的,确实能超过 21 亿,改代码都快改哭了。

还有 L 大说的兼容第三方
infun
2016-06-25 21:32:25 +08:00
我司 32 位升级 64 位专门立了个项目
hp3325
2016-06-25 21:42:45 +08:00
浪费?那是你没遇到溢出!
改代码,导数据的时候就不会觉得浪费了。
qgy18
2016-06-25 21:43:42 +08:00
百度 passport 当年就遇到 id 长度不够的问题,改了好久。
chaegumi
2016-06-25 21:45:56 +08:00
int 还要是无符号的,不然对接百度登录就不够
redtea
2016-06-25 21:48:21 +08:00
突然想到前公司一业务表的从表主键 id 就是 int ,如果业务繁荣的话,估计就要溢出了。
wdlth
2016-06-25 21:51:44 +08:00
不用自增而用算法生成主键的话,无符号 bigint 也不算多长。
Ouyangan
2016-06-25 21:53:04 +08:00
业务中使用 uuid , 第三方可以另建一张表维护
moult
2016-06-25 22:01:17 +08:00
听我的,用 char ,存 36 进制的,初期长度不够的时候前面补 0 。。。。。
ayaseangle
2016-06-25 22:02:01 +08:00
垃圾数据很快就超过了。。
bobuick
2016-06-25 22:03:46 +08:00
uuid 会影响 index ,各位说用 uuid 的记得指明场景, 不然误导人家了要
liashui
2016-06-25 22:09:19 +08:00
前期 int ,后期修改为 long 的工作量多大呢?
moult
2016-06-25 22:15:25 +08:00
@liashui 强类型语言的话,伤筋动骨很厉害,一个地方该类型,关联一堆的地方。
PHP 的话,直接查出来是 string 格式的,而且 ID 这种东西一般不会拿来加减乘除,无痛不痒。
infun
2016-06-25 22:18:44 +08:00
@liashui C#工作量还是蛮大的
fising
2016-06-25 22:24:52 +08:00
@Livid 就算有第三方登录,也不应该用第三方的 openId 作为用户表的主键吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/288290

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX