V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dong3580
V2EX  ›  Oracle

在表字段 id(编号)中,你们都是用什么类型?表会不会爆了

  •  
  •   dong3580 · 2014-08-08 15:00:31 +08:00 · 4677 次点击
    这是一个创建于 3560 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚把id设为int类型,瞬间觉得不妥了。

    Sql Server 中
    int类型 从 -2^31 (-2,147,483,648) 到 2^31 - 1(2,147,483,647) 的整型数据(所有数字),
    想到了一个很可怕的结局,如果用了int类型,超过了20亿条数据该怎么办?

    表会爆炸么?
    然后,程序全报错?
    你们都是用什么类型。
    8 条回复    2014-08-08 15:29:47 +08:00
    Livid
        1
    Livid  
    MOD
       2014-08-08 15:06:43 +08:00   ❤️ 1
    一些大型网站(比如 Twitter)确实已经遇到过这样的问题了,所以一种解决方法是用 64 位的 bigint。
    Livid
        2
    Livid  
    MOD
       2014-08-08 15:07:36 +08:00
    假如你写了一个程序,抓取 Twitter 的信息,需要在数据库里存 tweet ID 的话,那个字段就必须是 64 位的 bigint
    wingoo
        3
    wingoo  
       2014-08-08 15:07:54 +08:00
    根据你自己的规模,嫌小,用bigint足够你用
    或者guid
    ddzz
        4
    ddzz  
       2014-08-08 15:09:26 +08:00   ❤️ 1
    几年前我也纠结过,查了好多资料研究怎样把django和rails框架的主键设成bigint,后来才知道自己想多了。
    lincanbin
        5
    lincanbin  
       2014-08-08 15:11:41 +08:00
    我还想过用unsigned int(10)来存时间戳会不会爆掉,掐指一算,那也是一百年后的事了,我自己能不能活这么久还是两说。
    qiayue
        6
    qiayue  
       2014-08-08 15:12:33 +08:00   ❤️ 1
    我现在文章表、帖子表、回复表等会一直增加的表统一都用 bigint
    dong3580
        7
    dong3580  
    OP
       2014-08-08 15:21:42 +08:00
    @Livid
    插入语句,将int改为bigint报错了:

    [code]
    insert into test(id,title,content)
    values(12121231231314213213213123123,'2014年8月8日的事情','内容')
    [/code]

    将 expression 转换为数据类型 bigint 时出现算术溢出错误。

    第一次要准备用这种类型,这个怎么转换,还是....

    @wingoo
    怕撞了啊,guid和md5都是32位的

    @ddzz
    提高兼容性嘛

    @lincanbin
    用时间戳当id,好浪费id啊,中间一堆int数都被浪费了,

    @qiayue
    你怎么插入数据库,或者查询出来呢?
    查询出来用 Int64 表示么?
    插入报错。。。
    dong3580
        8
    dong3580  
    OP
       2014-08-08 15:29:47 +08:00
    惭愧,我弄错了,位数太长了。试了试18位不会报错,这样就足够了~~~
    3ks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1022 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:56 · PVG 05:56 · LAX 14:56 · JFK 17:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.