用户的唯一标识符

chr*_*ann 7 sql primary-key natural-key

如果我有一百个用户的表通常我会设置一个自动增量userID列作为主键.但是,如果突然我们有一百万用户或500万用户那么这变得非常困难,因为我希望开始变得更加分散,在这种情况下,自动增量主键将是无用的,因为每个节点将创建相同的主键.

解决方案是使用自然主键吗?我真的很难想到这群用户的自然主键.问题是他们都是年轻人,所以他们没有国家保险号码或我能想到的任何其他唯一标识符.我可以创建一个多列主键,但仍有机会,但重复次数发生微不足道.

有谁知道解决方案?

谢谢

Ode*_*ded 11

我想说暂时保持用户ID的自动增量.

当你确实有数百万用户突然涌入时,你可以考虑改变它.

换句话说,当你拥有它时解决问题."过早优化是万恶之源."

要回答这个问题 - 一些自动增量将允许您播种自动增量,因此您可以在不同的节点上获得不同的自动增量.这样可以避免这个问题,同时仍允许使用自动增量.

  • 虽然我与任何人的过早/不必要的优化相反,但我更倾向于**改变正在使用的桌子上的主键. (7认同)

Red*_*ter 8

这里的标准解决方案是使用GUID.但是,它们在索引方面表现不佳.

  • 您可能知道,您可以通过使用DateTime替换GUID的一半或四分之一来牺牲一些GUID的唯一性.我相信这被称为COMB指导.索引性能非常接近于int的性能.也就是说,GUID将在页面中占用更多空间并导致更多分裂. (2认同)