将非顺序ID作为数据库中表的主键是否可以?

tob*_*ter 5 mysql sql database indexing id

我不太了解数据库找到正确的词来提出这个问题,所以让我举一个例子来解释我正在尝试做的事情:假设我希望表的主键是我从中获取的ID API,但大多数API请求都会导致404错误.结果,我的表​​格看起来像这样:

我也不知道如何在Stack Overflow上格式化类似于表的结构,所以这将是一个粗略的视觉:

API_ID_PK | name
------------------
1         | Billy
5         | Timmy
23        | Richard
54        | Jobert
104       | Broccoli
Run Code Online (Sandbox Code Playgroud)

是否可以将ID按顺序分隔1位数?或者我应该这样做:

ID PK |  API_ID   | NAME
----------------------------------------
1     |    1      | Billy
2     |    5      | Timmy
3     |    23     | Richard
4     |    54     | Jobert
5     |    104    | Broccoli
Run Code Online (Sandbox Code Playgroud)

第二个表是否会因索引原因而更有效率?或者第一张表完美无缺?谢谢!

xbo*_*nez 8

不,如果您有非连续的ID,则不会对效率产生任何影响.事实上,MySQL(和其他数据库)允许您设置变量auto_increment_increment以使ID增量超过1.这通常用于多主设置.

  • @Coffee:该ID通常用于创建某种二进制树。因此,正如TMN所言,唯一的要求是它们必须唯一。 (2认同)