sql主键自动增量

时间:2012-03-15 04:06:39

标签: sql size primary-key user-experience quota

是否有必要在每个新行上自动递增的主键?对我来说,这个数字已经很长了,我甚至都没有使用它  我可以想象,随着我网站上的逐步用户活动,我们会添加新的行(我只测试了仅有2个alfa test用户的atm,并且数字已经auto incremented超过100个),最终这个数字可以达到愚蠢的比例(example: 10029379000577352881086),不仅会降低网站速度(影响用户体验),还可能不可避免地使我的网站超过其配额(超过其允许的大小(非专业人员))

真的需要吗?

5 个答案:

答案 0 :(得分:2)

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

对于大小配额问题,实际上我认为最大自动增量值不会导致您的站点超过数据限制。如果它是int类型,它将占用4个字节,无论内部的值如何。对于SQL server int类型,可以包含从-2 ^ 31(-2,147,483,648)到2 ^ 31-1(2,147,483,647)的值。 Here is the link for that

答案 1 :(得分:1)

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

如果您已经拥有 - 例如用户ID或电子邮件地址 - 那么您不一定需要该自动递增字段。

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

您确实需要一个标识每一行的键。但是键不必是每行“自动递增”的数字。一些人似乎认为增加数字总是一个好主意,这可能是因为粗心或缺乏对数据库基础,声音设计和数据完整性的理解。

答案 4 :(得分:-2)

对于表格并不总是需要主键。对于你的问题,请查看我的答案:

when and when not primary key should use