1

是否需要在每个新行上自动递增的主键?对我来说,这个数字变得很长,我什至没有用它做任何事情。
我可以想象,随着我网站上的逐步用户活动,将添加新行(我只测试只有 2 个alfa test用户的 atm,并且数量已经auto incremented超过 100),最终这个数字可能会达到愚蠢(example: 10029379000577352881086)的比例,不仅会减慢网站速度(影响用户体验)但也可能不可避免地推动我的网站超出其配额(超过其允许的大小(外行))

真的需要这个吗?

4

5 回答 5

2

如果您有一些可以作为主键的字段/列(或列组合),请使用它,为什么要使用自动增量。有一些思想流派相信两者兼而有之。您可以搜索代理键,您可能会发现这个答案很有趣代理与自然/业务键

对于大小配额问题,实际上我认为最大自动增量值不会导致您的站点超出数据限制。如果它是 int 类型,它将占用 4 个字节,而不管里面的值如何。对于 SQL 服务器,int 类型可以包含范围从 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) 的值。 这是该链接

于 2012-03-15T04:16:48.403 回答
1

您需要一种方法来唯一标识表中的每条记录。

如果你已经有了——比如用户 ID 或电子邮件地址——那么你不一定需要那个自动递增字段。

注意:如果您还没有对该字段的唯一约束,则应添加一个,以便无法将重复数据输入到表中。

警告:如果您决定摆脱它,请确保没有其他表正在使用它。

于 2012-03-15T04:10:44.893 回答
0

您不能使用多个列来获取复合键而不是那个吗?只是一个提示。

于 2012-03-15T04:14:49.547 回答
0

您确实需要一个标识每一行的键。但是键不必是每行“自动递增”的数字。一些人似乎认为递增数字对于密钥来说总是一个好主意,这可能是粗心大意或缺乏对数据库基础知识、合理设计和数据完整性的理解的结果。

于 2012-03-15T05:14:59.987 回答
-2

表的主键并不总是必需的。对于您的问题,请检查我的答案:

何时何地不应该使用主键

于 2012-03-15T04:15:57.857 回答