MySQL使用唯一的CHAR作为主键

时间:2017-09-07 23:26:49

标签: mysql sql char key

我是SQL编程的新手,我有一个包含两列的表,UUID(32个CHAR唯一的六角形字符串)和权限 (只是我正在使用的系统的权限,例如'admin'或'blacklist')。

我不是主键概念上最好的,所以我想知道它是否有效使用UUID作为我的主键,考虑到它是100%唯一没有空格,我已经用它来轻松索引我的查询。我没有加入任何东西,而且很可能永远都不会,所以将UUID用作我的主键是否有效而没有任何不可预见的后果?

1 个答案:

答案 0 :(得分:1)

使用UUID作为主键有效。它满足主键所需的两个条件:

  • 这是独一无二的。
  • 永远不会是NULL。

然而,这是一个坏主意。为什么? MySQL通过主键自动对数据进行聚类。也就是说,数据实际上是由主键排序的。 UUID不是顺序的。插入可以在任何地方发生,需要移动数据。

我建议使用一个简单的自动递增主键,并将UUID声明为唯一: