SQL'自动增量'的限制作为主键

时间:2018-05-02 01:25:38

标签: mysql mariadb primary-key auto-increment

我想创建一个在线广告牌系统,每个人都可以将主题发布为我的项目。

我尝试使用SQL设计数据库来存储每个主题的信息,包括主题的id作为主键。

首先,我使用带有自动增量的整数数据类型设计id,因为我认为这是最简单的方法。然后我想到了它并发现整数有限制(数字可能很高但它就在那里),所以我在这里找到另一种方法。

现在我想到一些伪随机算法,或者使用主题名称的哈希,但仍然不清楚。

我也在这里找到了研究的GUID,但不确定是否可以使用它。

我希望你建议我如何处理整数的限制大小作为主键,或建议我任何关键词供我进一步研究。

2 个答案:

答案 0 :(得分:1)

这个答案假定MySQL / MariaDB,因为它使用了术语"自动增量"对于此类列(与使用identityserial的其他数据库相对)。

如果int不够大,您可以使用bigint

虽然我可能会认为您不太可能超过int的阈值(适用于许多应用程序),bigint需要付出很大的努力才能让您和您的计算机长时间停留,长时间超过最大值。

documentation中解释了这一点。

答案 1 :(得分:-1)

使用int,SQL Server支持的最大值为2,147,483,647。

为了完整起见,我还要补充一点,另一个选择是将列的数据类型更改为bigint(最大值9,223,372,036,854,775,807 - 这将允许您连续近30万年每秒插入一百万行)。 或者如果你担心你会溢出,你可以考虑使用十进制(38,0) - 这里的最大值是一个由38个9组成的数字(这将允许你保持同样的速度,高达31,709,791,983,764,586,504,312,531年)。

http://sqlblog.com/blogs/hugo_kornelis