【问题标题】:mysql unlimited primary keys auto incrementmysql无限主键自动递增
【发布时间】:2012-12-08 20:30:08
【问题描述】:

我有一个问题,我真的不确定。 如果必须的话,请先对我投反对票,但我真的很想听听更有经验的开发人员的意见。

我正在建立一个网站,我想在其中建立类似谷歌圈子的功能。

我的逻辑是这样的。 每个用户在注册后都会有圈子。

用户注册的例子

表单提交,以下查询将插入数据库

**id   | circle_name       | user_id**
------------------------------------
1      | circle one        | 1
------------------------------
2      | circle two        | 1
------------------------------
3      | circle three      | 1

每个圈子都会有一个primary key

但这是我不确定的,所以一段时间后我有点害怕桌子会坏,我的意思是如果它会达到一定数量的 id,它实际上会停止生成更多。

当您在数据库中指定 int 时,默认值为 11,是的,我知道我可以将其增加或设置为我想要的值,但仍然提供更高的值是个好主意?

或者是否有可能使主键自动递增无限制?

感谢您的意见和帮助

【问题讨论】:

  • 不管怎样,一个 int 字段的长度并不是实际长度。它基本上只对填零列有用(在我看来,零填充的功能不属于数据库)。您可以轻松地对此进行测试:尝试将 5 个字符的 int 插入 int(3)。它会欣然接受。同样,int > 10 也不存在(因为 2^31-1 或 2^32-1 是 10 位数字)。
  • "如果您每秒 24x7 插入 1M 条记录,则需要 584542 年才能达到限制。" @9000....stackoverflow.com/questions/5762327/…

标签: php mysql primary-key auto-increment


【解决方案1】:

或者是否有可能使主键自动递增无限制?

您可以使用BIGINT

严格来说它不是无限的,但是范围非常大,即使你非常努力也无法用完所有的值。

【讨论】:

  • 你也可以让它无符号,这会大得离谱
  • 除此之外,当您的条目太多以至于 BIGINT 不再足够好时,您可以聘请世界上最聪明的人来解决您的数据库问题.
【解决方案2】:

只需进行一些数学运算,您就会自己得到答案。如果一个长度可以存储数十亿个值,并且您不希望每周有 100 万个新注册,那么即使“理论上“有可能

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2017-02-10
    • 2012-05-16
    相关资源
    最近更新 更多